Mailing-List: contact cygwin-developers-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT cygwin DOT com Delivered-To: mailing list cygwin-developers AT cygwin DOT com Message-ID: <017801c238c0$c4ba5fa0$6132bc3e@BABEL> From: "Conrad Scott" To: Subject: readv(2) and writev(2) Date: Wed, 31 Jul 2002 19:33:29 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 I'd really like to get access to the scatter/gather IO available in winsock but currently cygwin implements the readv(2) and writev(2) system calls by a sequence of reads and writes. Leaving aside efficiency questions, this also breaks the semantics of writev(2) on packet devices since it is meant to do an atomic write. (Nb. the WSASend function does have the appropriate semantics on "message-oriented sockets".) Of existing packages on cygwin, at least Apache and several of its modules use writev(2), tho' (AFAICT from a brief glimpse) it's only over stream sockets, so the semantics problem isn't an issue; the efficiency one might well be. My interest (as usual) is cygserver where writev(2) should make a performance difference. So, would anyone object if I did the work to change cygwin around to make use of the underlying scatter/gather operations? I was thinking of first re-arranging the fhandler interfaces so that the scatter/gather calls are the primitives and the other routines end up calling these (as a comment in "syscalls.cc" suggests). A second step would be to move the socket code over to use a scatter/gather implementation via WSASend and WSARecv. For the moment, // Conrad