diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2011-05-06 10:56:37 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2011-05-06 10:56:37 +0000 |
commit | a4e5706eb2e207ee891bc1dec7488ac6d3a14d48 (patch) | |
tree | 334b8f95cf17a34b1182e41961fe38b847acecb3 /winsup/cygwin/fhandler_socket.cc | |
parent | 92ddb74290655b6f9394801dac4242c93e03f9ed (diff) | |
download | cygnal-a4e5706eb2e207ee891bc1dec7488ac6d3a14d48.tar.gz cygnal-a4e5706eb2e207ee891bc1dec7488ac6d3a14d48.tar.bz2 cygnal-a4e5706eb2e207ee891bc1dec7488ac6d3a14d48.zip |
* fhandler.h (fhandler_socket::read): Declare.
(fhandler_socket::write): Declare.
* fhandler_procsys.cc (fhandler_procsys::read): Add FIXME comment.
(fhandler_procsys::write): Ditto.
* fhandler_socket.cc (fhandler_socket::read): New method.
(fhandler_socket::write): New method.
* syscalls.cc: Rearrange order of read/write functions.
(read): Call fhandler read method directly instead of just readv.
(readv): Remove EINTR loop. This is done in all affected fhandler's
now.
(write): Call fhandler write method directly instead of just writev.
Fix debug output.
Diffstat (limited to 'winsup/cygwin/fhandler_socket.cc')
-rw-r--r-- | winsup/cygwin/fhandler_socket.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 1151f89fe..d97dc4f55 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -1316,6 +1316,14 @@ fhandler_socket::getpeername (struct sockaddr *name, int *namelen) return res; } +void __stdcall +fhandler_socket::read (void *in_ptr, size_t& len) +{ + WSABUF wsabuf = { len, (char *) in_ptr }; + WSAMSG wsamsg = { NULL, 0, &wsabuf, 1, { 0, NULL }, 0 }; + len = recv_internal (&wsamsg); +} + int fhandler_socket::readv (const struct iovec *const iov, const int iovcnt, ssize_t tot) @@ -1531,6 +1539,14 @@ fhandler_socket::recvmsg (struct msghdr *msg, int flags) } int +fhandler_socket::write (const void *ptr, size_t len) +{ + WSABUF wsabuf = { len, (char *) ptr }; + WSAMSG wsamsg = { NULL, 0, &wsabuf, 1, { 0, NULL }, 0 }; + return send_internal (&wsamsg, 0); +} + +int fhandler_socket::writev (const struct iovec *const iov, const int iovcnt, ssize_t tot) { |