summaryrefslogtreecommitdiffstats
path: root/winsup
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2006-08-10 14:16:24 +0000
committerChristopher Faylor <me@cgf.cx>2006-08-10 14:16:24 +0000
commit2f98d8bdc7a9615d7d473cd808e7482c62bd9e41 (patch)
tree1e6a53905999557d05753d0eb14ca451d75a1048 /winsup
parent44d67b9b31f86fc7dd359a097fa413eee85b6b35 (diff)
downloadcygnal-2f98d8bdc7a9615d7d473cd808e7482c62bd9e41.tar.gz
cygnal-2f98d8bdc7a9615d7d473cd808e7482c62bd9e41.tar.bz2
cygnal-2f98d8bdc7a9615d7d473cd808e7482c62bd9e41.zip
revert erroneous checkin
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/fhandler.cc18
-rw-r--r--winsup/cygwin/fhandler_socket.cc5
2 files changed, 18 insertions, 5 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index ae5edcb62..00e987587 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -31,7 +31,6 @@ details. */
#include <winioctl.h>
#include <ntdef.h>
#include "ntdll.h"
-#include "mmap_helper.h"
static NO_COPY const int CHUNK_SIZE = 1024; /* Used for crlf conversions */
@@ -224,8 +223,10 @@ fhandler_base::raw_read (void *ptr, size_t& ulen)
HANDLE h = NULL; /* grumble */
int prio = 0; /* ditto */
+ int try_noreserve = 1;
DWORD len = ulen;
+retry:
ulen = (size_t) -1;
if (read_state)
{
@@ -234,7 +235,7 @@ fhandler_base::raw_read (void *ptr, size_t& ulen)
SetThreadPriority (h, THREAD_PRIORITY_TIME_CRITICAL);
signal_read_state (1);
}
- BOOL res = mmReadFile (get_handle (), ptr, len, (DWORD *) &ulen, 0);
+ BOOL res = ReadFile (get_handle (), ptr, len, (DWORD *) &ulen, 0);
if (read_state)
{
signal_read_state (1);
@@ -260,6 +261,19 @@ fhandler_base::raw_read (void *ptr, size_t& ulen)
bytes_read = 0;
break;
}
+ if (try_noreserve)
+ {
+ try_noreserve = 0;
+ switch (mmap_is_attached_or_noreserve (ptr, len))
+ {
+ case MMAP_NORESERVE_COMMITED:
+ goto retry;
+ case MMAP_RAISE_SIGBUS:
+ raise(SIGBUS);
+ case MMAP_NONE:
+ break;
+ }
+ }
/*FALLTHRU*/
case ERROR_INVALID_FUNCTION:
case ERROR_INVALID_PARAMETER:
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc
index 5feb9a69c..0fecdaaac 100644
--- a/winsup/cygwin/fhandler_socket.cc
+++ b/winsup/cygwin/fhandler_socket.cc
@@ -38,7 +38,6 @@
#include <sys/acl.h>
#include "cygtls.h"
#include "cygwin/in6.h"
-#include "mmap_helper.h"
#define ASYNC_MASK (FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT)
#define EVENT_MASK (FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE)
@@ -1164,8 +1163,8 @@ fhandler_socket::recv_internal (WSABUF *wsabuf, DWORD wsacnt, DWORD flags,
while (!(res = wait_for_events (evt_mask | FD_CLOSE))
|| saw_shutdown_read ())
{
- res = mmWSARecvFrom (get_socket (), wsabuf, wsacnt, &ret,
- &flags, from, fromlen, NULL, NULL);
+ res = WSARecvFrom (get_socket (), wsabuf, wsacnt, &ret,
+ &flags, from, fromlen, NULL, NULL);
if (!res || WSAGetLastError () != WSAEWOULDBLOCK)
break;
}