diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2010-05-25 13:01:06 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2010-05-25 13:01:06 +0000 |
commit | 734b8051613d689f7f45962c78f7681ada21d320 (patch) | |
tree | b30a2c6d758b212af4056d397264e9c19994b98a /otherlibs/win32unix/windbug.h | |
parent | e671780b01a86ad3f126017e814d126b8e4df1f9 (diff) |
Patch provided by Sylvain Le Gall:
- Fix #4894: Windows (mingw): Unix.select and non-blocking sockets,
add a filedescr.flags_fd in win32unix/unixsupport.h. It contains the
non-blocking status of the associated filedescr and helps to restore
this status after a select.
- Fix #4789: Windows: Unix.select failing with EPIPE error,
Apply patch provided by J. Vouillon
- Fix #4973: Failure "Unknown handle",
Be consistent between Windows and Linux, raise an EBADF Unix_error
for a closed pipe handle.
- Fix #4844: Unix.select bug (triggered if linked against threads),
Apply patch by C. Bauer, replace lpOrig by lpOrigIdx which can survive
a GC collection
For otherlibs/win32unix/{select|windbug}.c:
- Remove Heap* fucntions to allocate/free memory and replace it by
caml_stat_* function, which are more OCaml compliant
- Rework DBUG message, use DEBUG_PRINT rather than #ifdef DBUG... #endif
and use DEBUG variable (more OCaml compliant), also remove dbug_init
functions and use a static variable to replace it (subject to race
condition but this not really important, because every path lead to
same initialization)
- Use a fast start scheme for pipe polling, rather than always waiting
10ms, start by 1, 2, 4, 8 and then 10ms. The 4 first times give select
a chance to a fast answer.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@10467 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/win32unix/windbug.h')
-rw-r--r-- | otherlibs/win32unix/windbug.h | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/otherlibs/win32unix/windbug.h b/otherlibs/win32unix/windbug.h index 232bb1989..69cbd3b6e 100644 --- a/otherlibs/win32unix/windbug.h +++ b/otherlibs/win32unix/windbug.h @@ -13,17 +13,15 @@ /* $Id$ */ -/*#define DBUG*/ - -#ifdef DBUG +#ifdef DEBUG #include <stdio.h> #include <windows.h> -#define DBUG_PRINT(fmt, ...) \ +#define DEBUG_PRINT(fmt, ...) \ do \ { \ - if (dbug_test()) \ + if (debug_test()) \ { \ fprintf(stderr, "DBUG (pid:%d, tid: %d): ", GetCurrentProcessId(), GetCurrentThreadId()); \ fprintf(stderr, fmt, __VA_ARGS__); \ @@ -32,18 +30,9 @@ }; \ } while(0) -/* Initialize and cleanup dbug variable */ -void dbug_init (void); -void dbug_cleanup (void); - /* Test if we are in dbug mode */ -int dbug_test (void); - -#define DBUG_INIT dbug_init() -#define DBUG_CLEANUP dbug_cleanup() +int debug_test (void); #else -#define DBUG_PRINT(fmt, ...) -#define DBUG_INIT -#define DBUG_CLEANUP +#define DEBUG_PRINT(fmt, ...) #endif |