Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-05-06 14:56:37 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-05-06 14:56:37 +0400
commita4e5706eb2e207ee891bc1dec7488ac6d3a14d48 (patch)
tree334b8f95cf17a34b1182e41961fe38b847acecb3 /winsup/cygwin/fhandler_socket.cc
parent92ddb74290655b6f9394801dac4242c93e03f9ed (diff)
* 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.cc16
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)
{