* winsup.h: Turn on DEBUGGING by default for now.
This commit is contained in:
parent
887e02e478
commit
44d67b9b31
@ -1,3 +1,7 @@
|
|||||||
|
2006-08-10 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
|
* winsup.h: Turn on DEBUGGING by default for now.
|
||||||
|
|
||||||
2006-08-10 Corinna Vinschen <corinna@vinschen.de>
|
2006-08-10 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* fhandler_disk_file.cc (fhandler_disk_file::lock): Handle
|
* fhandler_disk_file.cc (fhandler_disk_file::lock): Handle
|
||||||
|
@ -31,6 +31,7 @@ details. */
|
|||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
#include <ntdef.h>
|
#include <ntdef.h>
|
||||||
#include "ntdll.h"
|
#include "ntdll.h"
|
||||||
|
#include "mmap_helper.h"
|
||||||
|
|
||||||
static NO_COPY const int CHUNK_SIZE = 1024; /* Used for crlf conversions */
|
static NO_COPY const int CHUNK_SIZE = 1024; /* Used for crlf conversions */
|
||||||
|
|
||||||
@ -223,10 +224,8 @@ fhandler_base::raw_read (void *ptr, size_t& ulen)
|
|||||||
|
|
||||||
HANDLE h = NULL; /* grumble */
|
HANDLE h = NULL; /* grumble */
|
||||||
int prio = 0; /* ditto */
|
int prio = 0; /* ditto */
|
||||||
int try_noreserve = 1;
|
|
||||||
DWORD len = ulen;
|
DWORD len = ulen;
|
||||||
|
|
||||||
retry:
|
|
||||||
ulen = (size_t) -1;
|
ulen = (size_t) -1;
|
||||||
if (read_state)
|
if (read_state)
|
||||||
{
|
{
|
||||||
@ -235,7 +234,7 @@ retry:
|
|||||||
SetThreadPriority (h, THREAD_PRIORITY_TIME_CRITICAL);
|
SetThreadPriority (h, THREAD_PRIORITY_TIME_CRITICAL);
|
||||||
signal_read_state (1);
|
signal_read_state (1);
|
||||||
}
|
}
|
||||||
BOOL res = ReadFile (get_handle (), ptr, len, (DWORD *) &ulen, 0);
|
BOOL res = mmReadFile (get_handle (), ptr, len, (DWORD *) &ulen, 0);
|
||||||
if (read_state)
|
if (read_state)
|
||||||
{
|
{
|
||||||
signal_read_state (1);
|
signal_read_state (1);
|
||||||
@ -261,19 +260,6 @@ retry:
|
|||||||
bytes_read = 0;
|
bytes_read = 0;
|
||||||
break;
|
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*/
|
/*FALLTHRU*/
|
||||||
case ERROR_INVALID_FUNCTION:
|
case ERROR_INVALID_FUNCTION:
|
||||||
case ERROR_INVALID_PARAMETER:
|
case ERROR_INVALID_PARAMETER:
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <sys/acl.h>
|
#include <sys/acl.h>
|
||||||
#include "cygtls.h"
|
#include "cygtls.h"
|
||||||
#include "cygwin/in6.h"
|
#include "cygwin/in6.h"
|
||||||
|
#include "mmap_helper.h"
|
||||||
|
|
||||||
#define ASYNC_MASK (FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT)
|
#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)
|
#define EVENT_MASK (FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE)
|
||||||
@ -1163,8 +1164,8 @@ fhandler_socket::recv_internal (WSABUF *wsabuf, DWORD wsacnt, DWORD flags,
|
|||||||
while (!(res = wait_for_events (evt_mask | FD_CLOSE))
|
while (!(res = wait_for_events (evt_mask | FD_CLOSE))
|
||||||
|| saw_shutdown_read ())
|
|| saw_shutdown_read ())
|
||||||
{
|
{
|
||||||
res = WSARecvFrom (get_socket (), wsabuf, wsacnt, &ret,
|
res = mmWSARecvFrom (get_socket (), wsabuf, wsacnt, &ret,
|
||||||
&flags, from, fromlen, NULL, NULL);
|
&flags, from, fromlen, NULL, NULL);
|
||||||
if (!res || WSAGetLastError () != WSAEWOULDBLOCK)
|
if (!res || WSAGetLastError () != WSAEWOULDBLOCK)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
91
winsup/cygwin/mmap_helper.h
Normal file
91
winsup/cygwin/mmap_helper.h
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
/* mmap_helper.h
|
||||||
|
|
||||||
|
Copyright 2006 Red Hat, Inc.
|
||||||
|
|
||||||
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
This software is a copyrighted work licensed under the terms of the
|
||||||
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
||||||
|
details. */
|
||||||
|
|
||||||
|
#ifndef _MMAP_HELPER_H
|
||||||
|
#define _MMAP_HELPER_H
|
||||||
|
#define _MMIOWRAP(__ptr, __len, __func) \
|
||||||
|
({ \
|
||||||
|
BOOL __res; \
|
||||||
|
for (int __i = 0; __i < 2; __i++) \
|
||||||
|
{ \
|
||||||
|
__res = __func; \
|
||||||
|
if (__res || __i > 0) \
|
||||||
|
break; \
|
||||||
|
DWORD __errcode = GetLastError (); \
|
||||||
|
if (__errcode != ERROR_NOACCESS) \
|
||||||
|
break; \
|
||||||
|
switch (mmap_is_attached_or_noreserve (__ptr, __len)) \
|
||||||
|
{ \
|
||||||
|
case MMAP_NORESERVE_COMMITED: \
|
||||||
|
continue; \
|
||||||
|
case MMAP_RAISE_SIGBUS: \
|
||||||
|
raise(SIGBUS); \
|
||||||
|
default: \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
__res; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#define _MMSOCKWRAP(__ptr, __count, __func) \
|
||||||
|
({ \
|
||||||
|
int __res; \
|
||||||
|
for (int __i = 0; __i < 2; __i++) \
|
||||||
|
{ \
|
||||||
|
__res = __func; \
|
||||||
|
if (!__res || __i > 0) \
|
||||||
|
break; \
|
||||||
|
DWORD __errcode = WSAGetLastError (); \
|
||||||
|
if (__errcode != WSAEFAULT) \
|
||||||
|
break; \
|
||||||
|
for (unsigned __j = 0; __j < __count; __j++) \
|
||||||
|
switch (mmap_is_attached_or_noreserve (__ptr[__j].buf, __ptr[__j].len)) \
|
||||||
|
{ \
|
||||||
|
case MMAP_NORESERVE_COMMITED: \
|
||||||
|
goto keeptrying; \
|
||||||
|
case MMAP_RAISE_SIGBUS: \
|
||||||
|
raise(SIGBUS); \
|
||||||
|
default: \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
break; \
|
||||||
|
keeptrying: \
|
||||||
|
continue; \
|
||||||
|
} \
|
||||||
|
__res; \
|
||||||
|
})
|
||||||
|
|
||||||
|
extern inline BOOL
|
||||||
|
mmReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
|
||||||
|
LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
|
||||||
|
{
|
||||||
|
return _MMIOWRAP (lpBuffer, nNumberOfBytesToRead,
|
||||||
|
(ReadFile (hFile, lpBuffer, nNumberOfBytesToRead,
|
||||||
|
lpNumberOfBytesRead, lpOverlapped)));
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _WINSOCK_H
|
||||||
|
extern inline int
|
||||||
|
mmWSARecvFrom (SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
|
||||||
|
LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags,
|
||||||
|
struct sockaddr* lpFrom,
|
||||||
|
LPINT lpFromlen, LPWSAOVERLAPPED lpOverlapped,
|
||||||
|
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
|
||||||
|
{
|
||||||
|
return _MMSOCKWRAP (lpBuffers, dwBufferCount,
|
||||||
|
(mmWSARecvFrom(s, lpBuffers, dwBufferCount,
|
||||||
|
lpNumberOfBytesRecvd, lpFlags, lpFrom,
|
||||||
|
lpFromlen, lpOverlapped,
|
||||||
|
lpCompletionRoutine)));
|
||||||
|
}
|
||||||
|
#endif /*_WINSOCK_H*/
|
||||||
|
|
||||||
|
#endif /*_MMAP_HELPER_H*/
|
@ -19,6 +19,9 @@ details. */
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef DEBUGGING
|
||||||
|
#define DEBUGGING 1 /* CGF: FIXME: TEMPORARY */
|
||||||
|
|
||||||
#define __INSIDE_CYGWIN__
|
#define __INSIDE_CYGWIN__
|
||||||
|
|
||||||
#define strlen __builtin_strlen
|
#define strlen __builtin_strlen
|
||||||
|
Loading…
x
Reference in New Issue
Block a user