diff options
56 files changed, 265 insertions, 219 deletions
@@ -1,3 +1,29 @@ +2011-05-29 Ross Johnson <ross dot johnson at homemail dot com dot au>
+
+ * *.[ch] (#ifdef): Extended cleanup to whole project.
+
+2011-05-29 Daniel Richard G. <skunk at iskunk dot org>
+
+ * Makefile (CC): Define CC to allow use of other compatible
+ compilers such as the Intel compilter icl.
+ * implement.h (#if): Fix forms like #if HAVE_SOMETHING.
+ * pthread.h: Likewise.
+ * sched.h: Likewise; PTW32_LEVEL_* becomes PTW32_SCHED_LEVEL_*.
+ * semaphore.h: Likewise.
+
+2011-05-11 Ross Johnson <ross.johnson at homemail.com.au>
+
+ * ptw32_callUserDestroyRoutines.c (terminate): Altered includes
+ to match ptw32_threadStart.c.
+ * GNUmakefile (GCE-inlined-debug, DOPT): Fixed.
+
+2011-04-31 Ross Johnson <ross.johnson at homemail.com.au>
+
+ * (robust mutexes): Added this API. The API is not
+ mandatory for implementations that don't support PROCESS_SHARED
+ mutexes, nevertheless it was considered useful both functionally
+ and for source-level compatibility.
+
2011-03-26 Ross Johnson <ross.johnson at homemail.com.au>
* pthread_getunique_np.c: New non-POSIX interface for compatibility
diff --git a/GNUmakefile b/GNUmakefile index 7b15451..3ee8763 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -59,7 +59,6 @@ RANLIB = $(CROSS)ranlib RC = $(CROSS)windres OPT = $(CLEANUP) -O3 # -finline-functions -findirect-inlining -DOPT = $(CLEANUP) -g -O0 XOPT = RCFLAGS = --include-dir=. @@ -481,31 +480,31 @@ GC: $(MAKE) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL) GC-debug: - $(MAKE) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_DLL) + $(MAKE) CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_DLL) GCE: $(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL) GCE-debug: - $(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCED_DLL) + $(MAKE) CC=$(CXX) CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_CXX -g -O0" $(GCED_DLL) GC-inlined: $(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP) GC-inlined-debug: - $(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_INLINED_STAMP) + $(MAKE) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_INLINED_STAMP) GCE-inlined: $(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP) GCE-inlined-debug: - $(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCED_INLINED_STAMP) + $(MAKE) CC=$(CXX) XOPT="-DPTW32_BUILD_INLINED" CLEANUP=-D__CLEANUP_CXX XC_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_CXX -g -O0" $(GCED_INLINED_STAMP) GC-static: $(MAKE) XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_STATIC_STAMP) GC-static-debug: - $(MAKE) XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="$(DOPT)" $(GCD_STATIC_STAMP) + $(MAKE) XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" DLL_VER=$(DLL_VERD) OPT="-D__CLEANUP_C -g -O0" $(GCD_STATIC_STAMP) tests: @ cd tests @@ -27,6 +27,7 @@ STATIC_STAMPS = pthreadVCE$(DLL_VER).static pthreadVSE$(DLL_VER).static pthreadV OPTIM = /O2 /Ob2 OPTIMD = +CC = cl CFLAGS = /W3 /MD /nologo /I. /D_WIN32_WINNT=0x400 /DHAVE_PTW32_CONFIG_H CFLAGSD = /Z7 $(CFLAGS) @@ -459,6 +460,7 @@ realclean: clean clean: if exist *.obj del *.obj + if exist *.def del *.def if exist *.ilk del *.ilk if exist *.pdb del *.pdb if exist *.exp del *.exp @@ -476,12 +478,12 @@ install: $(DLLS) copy semaphore.h $(HDRDEST) $(DLLS): $(DLL_OBJS) - cl /LDd /Zi /nologo $(DLL_OBJS) \ + $(CC) /LDd /Zi /nologo $(DLL_OBJS) \ /link /nodefaultlib:libcmt /implib:$*.lib \ msvcrt.lib $(XLIBS) /out:$@ $(INLINED_STAMPS): $(DLL_INLINED_OBJS) - cl /LDd /Zi /nologo $(DLL_INLINED_OBJS) \ + $(CC) /LDd /Zi /nologo $(DLL_INLINED_OBJS) \ /link /nodefaultlib:libcmt /implib:$*.lib \ msvcrt.lib $(XLIBS) /out:$*.dll @@ -490,13 +492,13 @@ $(STATIC_STAMPS): $(DLL_INLINED_OBJS) lib $(DLL_INLINED_OBJS) /out:$*.lib .c.obj: - cl $(EHFLAGS) /D$(CLEANUP) -c $< + $(CC) $(EHFLAGS) /D$(CLEANUP) -c $< .rc.res: rc /dPTW32_RC_MSC /d$(CLEANUP) $< .c.i: - cl /P /O2 /Ob1 $(VCFLAGS) $< + $(CC) /P /O2 /Ob1 $(VCFLAGS) $< attr.obj: attr.c $(ATTR_SRCS) $(INCL) barrier.obj: barrier.c $(BARRIER_SRCS) $(INCL) diff --git a/autostatic.c b/autostatic.c index e60bd12..092aff2 100755 --- a/autostatic.c +++ b/autostatic.c @@ -34,7 +34,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifdef PTW32_STATIC_LIB +#if defined(PTW32_STATIC_LIB) #if defined(__MINGW64__) || defined(__MINGW32__) || defined(_MSC_VER) @@ -108,7 +108,7 @@ * If you find that these are incorrect or incomplete please report it * to the pthreads-win32 maintainer. Thanks. *********************************************************************/ -#ifdef WINCE +#if defined(WINCE) #define NEED_DUPLICATEHANDLE #define NEED_CREATETHREAD #define NEED_ERRNO @@ -121,12 +121,12 @@ #define RETAIN_WSALASTERROR #endif -#ifdef _UWIN +#if defined(_UWIN) #define HAVE_MODE_T #define HAVE_STRUCT_TIMESPEC #endif -#ifdef __GNUC__ +#if defined(__GNUC__) #define HAVE_C_INLINE #endif @@ -137,13 +137,13 @@ #define HAVE_MODE_T #endif -#ifdef __BORLANDC__ +#if defined(__BORLANDC__) #endif -#ifdef __WATCOMC__ +#if defined(__WATCOMC__) #endif -#ifdef __DMC__ +#if defined(__DMC__) #define HAVE_SIGNAL_H #define HAVE_C_INLINE #endif @@ -299,7 +299,7 @@ FAIL0: *tid = thread; } -#ifdef _UWIN +#if defined(_UWIN) if (result == 0) pthread_count++; #endif @@ -34,12 +34,12 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifndef PTW32_STATIC_LIB +#if !defined(PTW32_STATIC_LIB) #include "pthread.h" #include "implement.h" -#ifdef _MSC_VER +#if defined(_MSC_VER) /* * lpvReserved yields an unreferenced formal parameter; * ignore it @@ -47,7 +47,7 @@ #pragma warning( disable : 4100 ) #endif -#ifdef __cplusplus +#if defined(__cplusplus) /* * Dear c++: Please don't mangle this name. -thanks */ @@ -99,7 +99,7 @@ ptw32_mcs_lock_t ptw32_spinlock_test_init_lock = 0; */ ptw32_mcs_lock_t ptw32_cond_list_lock = 0; -#ifdef _UWIN +#if defined(_UWIN) /* * Keep a count of the number of threads. */ diff --git a/implement.h b/implement.h index 8a27fae..bd2836b 100644 --- a/implement.h +++ b/implement.h @@ -35,10 +35,10 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifndef _IMPLEMENT_H +#if !defined(_IMPLEMENT_H) #define _IMPLEMENT_H -#ifdef _WIN32_WINNT +#if defined(_WIN32_WINNT) #undef _WIN32_WINNT #endif #define _WIN32_WINNT 0x400 @@ -48,7 +48,7 @@ /* * In case windows.h doesn't define it (e.g. WinCE perhaps) */ -#ifdef WINCE +#if defined(WINCE) typedef VOID (APIENTRY *PAPCFUNC)(DWORD dwParam); #endif @@ -60,7 +60,7 @@ typedef VOID (APIENTRY *PAPCFUNC)(DWORD dwParam); /* * In case ETIMEDOUT hasn't been defined above somehow. */ -#ifndef ETIMEDOUT +#if !defined(ETIMEDOUT) # define ETIMEDOUT 10060 /* This is the value in winsock.h. */ #endif @@ -82,7 +82,7 @@ typedef VOID (APIENTRY *PAPCFUNC)(DWORD dwParam); #define INLINE #endif -#if defined (__MINGW64__) || defined(__MINGW32__) || defined(_MSC_VER) +#if defined(__MINGW64__) || defined(__MINGW32__) || defined(_MSC_VER) #define PTW32_INTERLOCKED_LONG unsigned long #define PTW32_INTERLOCKED_LPLONG volatile unsigned long* #define PTW32_INTERLOCKED_PVOID PVOID @@ -133,7 +133,7 @@ typedef struct ptw32_thread_t_ ptw32_thread_t; struct ptw32_thread_t_ { -#ifdef _UWIN +#if defined(_UWIN) DWORD dummy[5]; #endif UINT64 seqNumber; /* Process-unique thread sequence number */ @@ -152,10 +152,10 @@ struct ptw32_thread_t_ int cancelState; int cancelType; HANDLE cancelEvent; -#ifdef __CLEANUP_C +#if defined(__CLEANUP_C) jmp_buf start_mark; #endif /* __CLEANUP_C */ -#if HAVE_SIGSET_T +#if defined(HAVE_SIGSET_T) sigset_t sigmask; #endif /* HAVE_SIGSET_T */ int implicit:1; @@ -182,7 +182,7 @@ struct pthread_attr_t_ struct sched_param param; int inheritsched; int contentionscope; -#if HAVE_SIGSET_T +#if defined(HAVE_SIGSET_T) sigset_t sigmask; #endif /* HAVE_SIGSET_T */ }; @@ -201,7 +201,7 @@ struct sem_t_ int value; pthread_mutex_t lock; HANDLE sem; -#ifdef NEED_SEM +#if defined(NEED_SEM) int leftToUnblock; #endif }; @@ -485,7 +485,7 @@ struct ThreadKeyAssoc }; -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) /* * -------------------------------------------------------------- * MAKE_SOFTWARE_EXCEPTION @@ -574,11 +574,11 @@ extern ptw32_mcs_lock_t ptw32_cond_test_init_lock; extern ptw32_mcs_lock_t ptw32_rwlock_test_init_lock; extern ptw32_mcs_lock_t ptw32_spinlock_test_init_lock; -#ifdef _UWIN +#if defined(_UWIN) extern int pthread_count; #endif -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ @@ -625,7 +625,7 @@ extern "C" void ptw32_rwlock_cancelwrwait (void *arg); -#if ! (defined (__MINGW64__) || defined(__MINGW32__)) || (defined (__MSVCRT__) && ! defined(__DMC__)) +#if ! (defined (__MINGW64__) || defined(__MINGW32__)) || (defined(__MSVCRT__) && ! defined(__DMC__)) unsigned __stdcall #else void @@ -650,19 +650,19 @@ extern "C" void ptw32_mcs_node_transfer (ptw32_mcs_local_node_t * new_node, ptw32_mcs_local_node_t * old_node); -#ifdef NEED_FTIME +#if defined(NEED_FTIME) void ptw32_timespec_to_filetime (const struct timespec *ts, FILETIME * ft); void ptw32_filetime_to_timespec (const FILETIME * ft, struct timespec *ts); #endif /* Declared in misc.c */ -#ifdef NEED_CALLOC +#if defined(NEED_CALLOC) #define calloc(n, s) ptw32_calloc(n, s) void *ptw32_calloc (size_t n, size_t s); #endif /* Declared in private.c */ -#ifdef _MSC_VER +#if defined(_MSC_VER) /* * Ignore the warning: * "C++ exception specification ignored except to indicate that @@ -671,19 +671,19 @@ extern "C" #pragma warning(disable:4290) #endif void ptw32_throw (DWORD exception) -#ifdef __CLEANUP_CXX +#if defined(__CLEANUP_CXX) throw(ptw32_exception_cancel,ptw32_exception_exit) #endif ; -#ifdef __cplusplus +#if defined(__cplusplus) } #endif /* __cplusplus */ -#ifdef _UWIN_ -# ifdef _MT -# ifdef __cplusplus +#if defined(_UWIN_) +# if defined(_MT) +# if defined(__cplusplus) extern "C" { # endif @@ -694,7 +694,7 @@ extern "C" unsigned (__stdcall *) (void *), void *, unsigned, unsigned *); _CRTIMP void __cdecl _endthreadex (unsigned); -# ifdef __cplusplus +# if defined(__cplusplus) } # endif # endif @@ -37,7 +37,7 @@ #if ! defined(_UWIN) && ! defined(WINCE) # include <process.h> #endif -#ifndef NEED_FTIME +#if !defined(NEED_FTIME) #include <sys/timeb.h> #endif #include "pthread.h" diff --git a/need_errno.h b/need_errno.h index 30c674d..abf1c95 100644 --- a/need_errno.h +++ b/need_errno.h @@ -17,16 +17,16 @@ #pragma once #endif -#ifndef _INC_ERRNO +#if !defined(_INC_ERRNO) #define _INC_ERRNO -#if !defined(_WIN32) +#if !defined(_WIN32) #error ERROR: Only Win32 targets supported! #endif #include <winsock.h> -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif @@ -35,7 +35,7 @@ extern "C" { /* Define _CRTIMP */ #ifndef _CRTIMP -#ifdef _DLL +#if defined(_DLL) #define _CRTIMP __declspec(dllimport) #else /* ndef _DLL */ #define _CRTIMP @@ -45,13 +45,13 @@ extern "C" { /* Define __cdecl for non-Microsoft compilers */ -#if ( !defined(_MSC_VER) && !defined(__cdecl) ) +#if ( !defined(_MSC_VER) && !defined(__cdecl) ) #define __cdecl #endif /* Define _CRTAPI1 (for compatibility with the NT SDK) */ -#ifndef _CRTAPI1 +#if !defined(_CRTAPI1) #if _MSC_VER >= 800 && _M_IX86 >= 300 #define _CRTAPI1 __cdecl #else @@ -60,7 +60,7 @@ extern "C" { #endif #if !defined(PTW32_STATIC_LIB) -# ifdef PTW32_BUILD +# if defined(PTW32_BUILD) # define PTW32_DLLPORT __declspec (dllexport) # else # define PTW32_DLLPORT __declspec (dllimport) @@ -71,7 +71,7 @@ extern "C" { /* declare reference to errno */ -#if (defined(_MT) || defined(_MD) || defined(_DLL)) && !defined(_MAC) +#if (defined(_MT) || defined(_MD) || defined(_DLL)) && !defined(_MAC) PTW32_DLLPORT int * __cdecl _errno(void); #define errno (*_errno()) #else /* ndef _MT && ndef _MD && ndef _DLL */ @@ -115,7 +115,7 @@ _CRTIMP extern int errno; #define EDEADLK 36 /* defined differently in winsock.h on WinCE */ -#ifndef ENAMETOOLONG +#if !defined(ENAMETOOLONG) #define ENAMETOOLONG 38 #endif @@ -123,7 +123,7 @@ _CRTIMP extern int errno; #define ENOSYS 40 /* defined differently in winsock.h on WinCE */ -#ifndef ENOTEMPTY +#if !defined(ENOTEMPTY) #define ENOTEMPTY 41 #endif @@ -138,7 +138,7 @@ _CRTIMP extern int errno; */ #define EDEADLOCK EDEADLK -#ifdef __cplusplus +#if defined(__cplusplus) } #endif @@ -81,7 +81,7 @@ /* * Stop here if we are being included by the resource compiler. */ -#ifndef RC_INVOKED +#if !defined(RC_INVOKED) #undef PTW32_LEVEL @@ -109,7 +109,7 @@ /* Include everything */ #endif -#ifdef _UWIN +#if defined(_UWIN) # define HAVE_STRUCT_TIMESPEC 1 # define HAVE_SIGNAL_H 1 # undef HAVE_PTW32_CONFIG_H @@ -194,7 +194,7 @@ #define PTW32_INCLUDE_WINDOWS_H #endif -#ifdef PTW32_INCLUDE_WINDOWS_H +#if defined(PTW32_INCLUDE_WINDOWS_H) #include <windows.h> #endif @@ -210,17 +210,17 @@ typedef unsigned long DWORD_PTR; * ----------------- */ -#if HAVE_PTW32_CONFIG_H +#if defined(HAVE_PTW32_CONFIG_H) #include "config.h" #endif /* HAVE_PTW32_CONFIG_H */ -#ifndef NEED_FTIME +#if !defined(NEED_FTIME) #include <time.h> #else /* NEED_FTIME */ /* use native WIN32 time API */ #endif /* NEED_FTIME */ -#if HAVE_SIGNAL_H +#if defined(HAVE_SIGNAL_H) #include <signal.h> #endif /* HAVE_SIGNAL_H */ @@ -240,7 +240,7 @@ enum { * which is only used when building the pthread-win32 libraries. */ -#ifndef PTW32_CONFIG_H +#if !defined(PTW32_CONFIG_H) # if defined(WINCE) # define NEED_ERRNO # define NEED_SEM @@ -258,7 +258,7 @@ enum { */ #if PTW32_LEVEL >= PTW32_LEVEL_MAX -#ifdef NEED_ERRNO +#if defined(NEED_ERRNO) #include "need_errno.h" #else #include <errno.h> @@ -268,20 +268,20 @@ enum { /* * Several systems don't define some error numbers. */ -#ifndef ENOTSUP +#if !defined(ENOTSUP) # define ENOTSUP 48 /* This is the value in Solaris. */ #endif -#ifndef ETIMEDOUT +#if !defined(ETIMEDOUT) # define ETIMEDOUT 10060 /* Same as WSAETIMEDOUT */ #endif -#ifndef ENOSYS +#if !defined(ENOSYS) # define ENOSYS 140 /* Semi-arbitrary value */ #endif -#ifndef EDEADLK -# ifdef EDEADLOCK +#if !defined(EDEADLK) +# if defined(EDEADLOCK) # define EDEADLK EDEADLOCK # else # define EDEADLK 36 /* This is the value in MSVC. */ @@ -289,10 +289,10 @@ enum { #endif /* POSIX 2008 - related to robust mutexes */ -#ifndef EOWNERDEAD +#if !defined(EOWNERDEAD) # define EOWNERDEAD 43 #endif -#ifndef ENOTRECOVERABLE +#if !defined(ENOTRECOVERABLE) # define ENOTRECOVERABLE 44 #endif @@ -302,20 +302,20 @@ enum { * To avoid including windows.h we define only those things that we * actually need from it. */ -#ifndef PTW32_INCLUDE_WINDOWS_H -#ifndef HANDLE +#if !defined(PTW32_INCLUDE_WINDOWS_H) +#if !defined(HANDLE) # define PTW32__HANDLE_DEF # define HANDLE void * #endif -#ifndef DWORD +#if !defined(DWORD) # define PTW32__DWORD_DEF # define DWORD unsigned long #endif #endif -#ifndef HAVE_STRUCT_TIMESPEC +#if !defined(HAVE_STRUCT_TIMESPEC) #define HAVE_STRUCT_TIMESPEC -#ifndef _TIMESPEC_DEFINED +#if !defined(_TIMESPEC_DEFINED) #define _TIMESPEC_DEFINED struct timespec { time_t tv_sec; @@ -324,19 +324,19 @@ struct timespec { #endif /* _TIMESPEC_DEFINED */ #endif /* HAVE_STRUCT_TIMESPEC */ -#ifndef SIG_BLOCK +#if !defined(SIG_BLOCK) #define SIG_BLOCK 0 #endif /* SIG_BLOCK */ -#ifndef SIG_UNBLOCK +#if !defined(SIG_UNBLOCK) #define SIG_UNBLOCK 1 #endif /* SIG_UNBLOCK */ -#ifndef SIG_SETMASK +#if !defined(SIG_SETMASK) #define SIG_SETMASK 2 #endif /* SIG_SETMASK */ -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ @@ -537,7 +537,7 @@ extern "C" #define SEM_VALUE_MAX INT_MAX -#if __GNUC__ && ! defined (__declspec) +#if defined(__GNUC__) && !defined(__declspec) # error Please upgrade your GNU compiler to one that supports __declspec. #endif @@ -548,7 +548,7 @@ extern "C" * be imported correctly. */ #if !defined(PTW32_STATIC_LIB) -# ifdef PTW32_BUILD +# if defined(PTW32_BUILD) # define PTW32_DLLPORT __declspec (dllexport) # else # define PTW32_DLLPORT __declspec (dllimport) @@ -746,7 +746,7 @@ struct ptw32_cleanup_t struct ptw32_cleanup_t *prev; }; -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) /* * WIN32 SEH version of cancel cleanup. */ @@ -773,7 +773,7 @@ struct ptw32_cleanup_t #else /* __CLEANUP_SEH */ -#ifdef __CLEANUP_C +#if defined(__CLEANUP_C) /* * C implementation of PThreads cancel cleanup @@ -791,7 +791,7 @@ struct ptw32_cleanup_t #else /* __CLEANUP_C */ -#ifdef __CLEANUP_CXX +#if defined(__CLEANUP_CXX) /* * C++ version of cancel cleanup. @@ -1244,11 +1244,11 @@ PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (HANDLE waitHandle, /* * Thread-Safe C Runtime Library Mappings. */ -#ifndef _UWIN +#if !defined(_UWIN) # if defined(NEED_ERRNO) PTW32_DLLPORT int * PTW32_CDECL _errno( void ); # else -# ifndef errno +# if !defined(errno) # if (defined(_MT) || defined(_DLL)) __declspec(dllimport) extern int * __cdecl _errno(void); # define errno (*_errno()) @@ -1265,7 +1265,7 @@ PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (HANDLE waitHandle, # define _timeb timeb #endif -#ifdef __cplusplus +#if defined(__cplusplus) /* * Internal exceptions @@ -1286,9 +1286,9 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void); #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ -#ifndef PTW32_BUILD +#if !defined(PTW32_BUILD) -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) /* * Redefine the SEH __except keyword to ensure that applications @@ -1300,19 +1300,19 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void); #endif /* __CLEANUP_SEH */ -#ifdef __CLEANUP_CXX +#if defined(__CLEANUP_CXX) /* * Redefine the C++ catch keyword to ensure that applications * propagate our internal exceptions up to the library's internal handlers. */ -#ifdef _MSC_VER +#if defined(_MSC_VER) /* * WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll' * if you want Pthread-Win32 cancelation and pthread_exit to work. */ -#ifndef PtW32NoCatchWarn +#if !defined(PtW32NoCatchWarn) #pragma message("Specify \"/DPtW32NoCatchWarn\" compiler flag to skip this message.") #pragma message("------------------------------------------------------------------") @@ -1321,7 +1321,7 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void); #pragma message(" with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread") #pragma message(" cancelation and pthread_exit to work. For example:") #pragma message("") -#pragma message(" #ifdef PtW32CatchAll") +#pragma message(" #if defined(PtW32CatchAll)") #pragma message(" PtW32CatchAll") #pragma message(" #else") #pragma message(" catch(...)") @@ -1349,14 +1349,14 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void); #endif /* ! PTW32_BUILD */ -#ifdef __cplusplus +#if defined(__cplusplus) } /* End of extern "C" */ #endif /* __cplusplus */ -#ifdef PTW32__HANDLE_DEF +#if defined(PTW32__HANDLE_DEF) # undef HANDLE #endif -#ifdef PTW32__DWORD_DEF +#if defined(PTW32__DWORD_DEF) # undef DWORD #endif diff --git a/pthread_attr_getscope.c b/pthread_attr_getscope.c index 3c86382..2efdb2f 100644 --- a/pthread_attr_getscope.c +++ b/pthread_attr_getscope.c @@ -38,14 +38,14 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif int pthread_attr_getscope (const pthread_attr_t * attr, int *contentionscope) { -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING) *contentionscope = (*attr)->contentionscope; return 0; #else diff --git a/pthread_attr_getstackaddr.c b/pthread_attr_getstackaddr.c index 9b55959..1a2da01 100644 --- a/pthread_attr_getstackaddr.c +++ b/pthread_attr_getstackaddr.c @@ -38,7 +38,7 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif diff --git a/pthread_attr_getstacksize.c b/pthread_attr_getstacksize.c index da8db63..dff9230 100644 --- a/pthread_attr_getstacksize.c +++ b/pthread_attr_getstacksize.c @@ -38,7 +38,7 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif @@ -80,7 +80,7 @@ pthread_attr_getstacksize (const pthread_attr_t * attr, size_t * stacksize) * ------------------------------------------------------ */ { -#ifdef _POSIX_THREAD_ATTR_STACKSIZE +#if defined(_POSIX_THREAD_ATTR_STACKSIZE) if (ptw32_is_attr (attr) != 0) { diff --git a/pthread_attr_init.c b/pthread_attr_init.c index 6c10bd3..ae9d3eb 100644 --- a/pthread_attr_init.c +++ b/pthread_attr_init.c @@ -80,7 +80,7 @@ pthread_attr_init (pthread_attr_t * attr) return ENOMEM; } -#ifdef _POSIX_THREAD_ATTR_STACKSIZE +#if defined(_POSIX_THREAD_ATTR_STACKSIZE) /* * Default to zero size. Unless changed explicitly this * will allow Win32 to set the size to that of the @@ -89,14 +89,14 @@ pthread_attr_init (pthread_attr_t * attr) attr_result->stacksize = 0; #endif -#ifdef _POSIX_THREAD_ATTR_STACKADDR +#if defined(_POSIX_THREAD_ATTR_STACKADDR) /* FIXME: Set this to something sensible when we support it. */ attr_result->stackaddr = NULL; #endif attr_result->detachstate = PTHREAD_CREATE_JOINABLE; -#if HAVE_SIGSET_T +#if defined(HAVE_SIGSET_T) memset (&(attr_result->sigmask), 0, sizeof (sigset_t)); #endif /* HAVE_SIGSET_T */ diff --git a/pthread_attr_setscope.c b/pthread_attr_setscope.c index 9cef423..39a51df 100644 --- a/pthread_attr_setscope.c +++ b/pthread_attr_setscope.c @@ -38,14 +38,14 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif int pthread_attr_setscope (pthread_attr_t * attr, int contentionscope) { -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING) switch (contentionscope) { case PTHREAD_SCOPE_SYSTEM: diff --git a/pthread_attr_setstacksize.c b/pthread_attr_setstacksize.c index 9df46af..eb13589 100644 --- a/pthread_attr_setstacksize.c +++ b/pthread_attr_setstacksize.c @@ -80,7 +80,7 @@ pthread_attr_setstacksize (pthread_attr_t * attr, size_t stacksize) * ------------------------------------------------------ */ { -#ifdef _POSIX_THREAD_ATTR_STACKSIZE +#if defined(_POSIX_THREAD_ATTR_STACKSIZE) #if PTHREAD_STACK_MIN > 0 diff --git a/pthread_detach.c b/pthread_detach.c index 84bfe1a..9ff6587 100644 --- a/pthread_detach.c +++ b/pthread_detach.c @@ -42,7 +42,7 @@ * Not needed yet, but defining it should indicate clashes with build target * environment that should be fixed. */ -#ifndef WINCE +#if !defined(WINCE) # include <signal.h> #endif diff --git a/pthread_exit.c b/pthread_exit.c index a2d7f8f..37b3c09 100644 --- a/pthread_exit.c +++ b/pthread_exit.c @@ -37,7 +37,7 @@ #include "pthread.h" #include "implement.h" -#ifndef _UWIN +#if !defined(_UWIN) /*# include <process.h> */ #endif @@ -73,7 +73,7 @@ pthread_exit (void *value_ptr) */ sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); -#ifdef _UWIN +#if defined(_UWIN) if (--pthread_count <= 0) exit ((int) value_ptr); #endif diff --git a/pthread_join.c b/pthread_join.c index c49484d..c2b7c1e 100644 --- a/pthread_join.c +++ b/pthread_join.c @@ -42,7 +42,7 @@ * Not needed yet, but defining it should indicate clashes with build target * environment that should be fixed. */ -#ifndef WINCE +#if !defined(WINCE) # include <signal.h> #endif diff --git a/pthread_key_create.c b/pthread_key_create.c index 0851c0b..bdeee09 100644 --- a/pthread_key_create.c +++ b/pthread_key_create.c @@ -39,7 +39,7 @@ /* TLS_OUT_OF_INDEXES not defined on WinCE */ -#ifndef TLS_OUT_OF_INDEXES +#if !defined(TLS_OUT_OF_INDEXES) #define TLS_OUT_OF_INDEXES 0xffffffff #endif diff --git a/pthread_kill.c b/pthread_kill.c index 21939d8..5473b43 100644 --- a/pthread_kill.c +++ b/pthread_kill.c @@ -41,7 +41,7 @@ * Not needed yet, but defining it should indicate clashes with build target * environment that should be fixed. */ -#ifndef WINCE +#if !defined(WINCE) # include <signal.h> #endif diff --git a/pthread_mutex_consistent.c b/pthread_mutex_consistent.c index b5dcc15..681358c 100755 --- a/pthread_mutex_consistent.c +++ b/pthread_mutex_consistent.c @@ -66,7 +66,7 @@ * ■ If the thread that acquires the lock with EOWNERDEAD terminates without unlocking the * mutex, the next owner acquires the lock with an EOWNERDEAD return code. */ -#ifndef _UWIN +#if !defined(_UWIN) /*# include <process.h> */ #endif #include "pthread.h" diff --git a/pthread_mutex_lock.c b/pthread_mutex_lock.c index ba410a6..0d4fde8 100644 --- a/pthread_mutex_lock.c +++ b/pthread_mutex_lock.c @@ -34,7 +34,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifndef _UWIN +#if !defined(_UWIN) /*# include <process.h> */ #endif #include "pthread.h" diff --git a/pthread_self.c b/pthread_self.c index 8b85c61..9a1765f 100644 --- a/pthread_self.c +++ b/pthread_self.c @@ -63,7 +63,7 @@ pthread_self (void) pthread_t nil = {NULL, 0}; ptw32_thread_t * sp; -#ifdef _UWIN +#if defined(_UWIN) if (!ptw32_selfThreadKey) return nil; #endif @@ -95,7 +95,7 @@ pthread_self (void) sp->detachState = PTHREAD_CREATE_DETACHED; sp->thread = GetCurrentThreadId (); -#ifdef NEED_DUPLICATEHANDLE +#if defined(NEED_DUPLICATEHANDLE) /* * DuplicateHandle does not exist on WinCE. * diff --git a/pthread_win32_attach_detach_np.c b/pthread_win32_attach_detach_np.c index 65e0913..25bcb95 100644 --- a/pthread_win32_attach_detach_np.c +++ b/pthread_win32_attach_detach_np.c @@ -54,7 +54,7 @@ pthread_win32_process_attach_np () result = ptw32_processInitialize (); -#ifdef _UWIN +#if defined(_UWIN) pthread_count++; #endif diff --git a/ptw32_InterlockedCompareExchange.c b/ptw32_InterlockedCompareExchange.c index 74b9f15..2a42b22 100644 --- a/ptw32_InterlockedCompareExchange.c +++ b/ptw32_InterlockedCompareExchange.c @@ -36,7 +36,7 @@ */ #if 0 -#ifndef _WIN64 +#if !defined(_WIN64) #include "pthread.h" #include "implement.h" diff --git a/ptw32_MCS_lock.c b/ptw32_MCS_lock.c index 02cdc5e..d63ef5a 100644 --- a/ptw32_MCS_lock.c +++ b/ptw32_MCS_lock.c @@ -149,7 +149,7 @@ ptw32_mcs_flag_wait (LONG * flag) * Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors. * ACM Transactions on Computer Systems, 9(1):21-65, Feb. 1991. */ -#ifdef PTW32_BUILD_INLINED +#if defined(PTW32_BUILD_INLINED) INLINE #endif /* PTW32_BUILD_INLINED */ void @@ -183,7 +183,7 @@ ptw32_mcs_lock_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * node) * Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors. * ACM Transactions on Computer Systems, 9(1):21-65, Feb. 1991. */ -#ifdef PTW32_BUILD_INLINED +#if defined(PTW32_BUILD_INLINED) INLINE #endif /* PTW32_BUILD_INLINED */ void @@ -219,7 +219,7 @@ ptw32_mcs_lock_release (ptw32_mcs_local_node_t * node) /* * ptw32_mcs_lock_try_acquire */ -#ifdef PTW32_BUILD_INLINED +#if defined(PTW32_BUILD_INLINED) INLINE #endif /* PTW32_BUILD_INLINED */ int @@ -247,7 +247,7 @@ ptw32_mcs_lock_try_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * no * * Should only be called by the thread that has the lock. */ -#ifdef PTW32_BUILD_INLINED +#if defined(PTW32_BUILD_INLINED) INLINE #endif /* PTW32_BUILD_INLINED */ void diff --git a/ptw32_callUserDestroyRoutines.c b/ptw32_callUserDestroyRoutines.c index 8873f87..f290f7b 100644 --- a/ptw32_callUserDestroyRoutines.c +++ b/ptw32_callUserDestroyRoutines.c @@ -38,10 +38,20 @@ #include "pthread.h" #include "implement.h" -#ifdef __cplusplus -# if ! defined (_MSC_VER) && ! (defined(__GNUC__) && __GNUC__ < 3) && ! defined(__WATCOMC__) -using - std::terminate; +#if defined(__CLEANUP_CXX) +# if defined(_MSC_VER) +# include <eh.h> +# elif defined(__WATCOMC__) +# include <eh.h> +# include <exceptio.h> +# else +# if defined(__GNUC__) && __GNUC__ < 3 +# include <new.h> +# else +# include <new> + using + std::terminate; +# endif # endif #endif @@ -172,7 +182,7 @@ ptw32_callUserDestroyRoutines (pthread_t thread) assocsRemaining++; -#ifdef __cplusplus +#if defined(__cplusplus) try { diff --git a/ptw32_calloc.c b/ptw32_calloc.c index eea7c74..e7b9e64 100644 --- a/ptw32_calloc.c +++ b/ptw32_calloc.c @@ -38,7 +38,7 @@ #include "implement.h" -#ifdef NEED_CALLOC +#if defined(NEED_CALLOC) void * ptw32_calloc (size_t n, size_t s) { diff --git a/ptw32_relmillisecs.c b/ptw32_relmillisecs.c index a82bfb7..c9224ff 100644 --- a/ptw32_relmillisecs.c +++ b/ptw32_relmillisecs.c @@ -36,12 +36,12 @@ #include "pthread.h" #include "implement.h" -#ifndef NEED_FTIME +#if !defined(NEED_FTIME) #include <sys/timeb.h> #endif -#ifdef PTW32_BUILD_INLINED +#if defined(PTW32_BUILD_INLINED) INLINE #endif /* PTW32_BUILD_INLINED */ DWORD @@ -52,7 +52,7 @@ ptw32_relmillisecs (const struct timespec * abstime) DWORD milliseconds; int64_t tmpAbsMilliseconds; int64_t tmpCurrMilliseconds; -#ifdef NEED_FTIME +#if defined(NEED_FTIME) struct timespec currSysTime; FILETIME ft; SYSTEMTIME st; @@ -81,7 +81,7 @@ ptw32_relmillisecs (const struct timespec * abstime) /* get current system time */ -#ifdef NEED_FTIME +#if defined(NEED_FTIME) GetSystemTime(&st); SystemTimeToFileTime(&st, &ft); @@ -98,7 +98,7 @@ ptw32_relmillisecs (const struct timespec * abstime) #else /* ! NEED_FTIME */ -#ifdef _MSC_VER +#if defined(_MSC_VER) _ftime64_s(&currSysTime); #elif (defined(__MINGW64__) || defined(__MINGW32__)) && __MSVCRT_VERSION__ >= 0x0601 _ftime64(&currSysTime); diff --git a/ptw32_reuse.c b/ptw32_reuse.c index 31ebdc4..7325857 100644 --- a/ptw32_reuse.c +++ b/ptw32_reuse.c @@ -126,7 +126,7 @@ ptw32_threadReusePush (pthread_t thread) tp->ptHandle = t; /* Bump the reuse counter now */ -#ifdef PTW32_THREAD_ID_REUSE_INCREMENT +#if defined(PTW32_THREAD_ID_REUSE_INCREMENT) tp->ptHandle.x += PTW32_THREAD_ID_REUSE_INCREMENT; #else tp->ptHandle.x++; diff --git a/ptw32_semwait.c b/ptw32_semwait.c index 361366b..c3c4fd0 100644 --- a/ptw32_semwait.c +++ b/ptw32_semwait.c @@ -34,7 +34,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifndef _UWIN +#if !defined(_UWIN) /*# include <process.h> */ #endif #include "pthread.h" @@ -96,7 +96,7 @@ ptw32_semwait (sem_t * sem) /* Must wait */ if (WaitForSingleObject (s->sem, INFINITE) == WAIT_OBJECT_0) { -#ifdef NEED_SEM +#if defined(NEED_SEM) if (pthread_mutex_lock (&s->lock) == 0) { if (*sem == NULL) diff --git a/ptw32_threadStart.c b/ptw32_threadStart.c index 830ae2e..3315972 100644 --- a/ptw32_threadStart.c +++ b/ptw32_threadStart.c @@ -37,8 +37,9 @@ #include "pthread.h" #include "implement.h" +#include <stdio.h> -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) static DWORD ExceptionFilter (EXCEPTION_POINTERS * ep, DWORD * ei) @@ -129,12 +130,12 @@ ptw32_threadStart (void *vthreadParms) void *(*start) (void *); void * arg; -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) DWORD ei[] = { 0, 0, 0 }; #endif -#ifdef __CLEANUP_C +#if defined(__CLEANUP_C) int setjmp_rc; #endif @@ -169,7 +170,7 @@ ptw32_threadStart (void *vthreadParms) sp->state = PThreadStateRunning; ptw32_mcs_lock_release (&stateLock); -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) __try { @@ -179,7 +180,7 @@ ptw32_threadStart (void *vthreadParms) status = sp->exitStatus = (*start) (arg); sp->state = PThreadStateExiting; -#ifdef _UWIN +#if defined(_UWIN) if (--pthread_count <= 0) exit (0); #endif @@ -191,7 +192,7 @@ ptw32_threadStart (void *vthreadParms) { case PTW32_EPS_CANCEL: status = sp->exitStatus = PTHREAD_CANCELED; -#ifdef _UWIN +#if defined(_UWIN) if (--pthread_count <= 0) exit (0); #endif @@ -207,7 +208,7 @@ ptw32_threadStart (void *vthreadParms) #else /* __CLEANUP_SEH */ -#ifdef __CLEANUP_C +#if defined(__CLEANUP_C) setjmp_rc = setjmp (sp->start_mark); @@ -238,7 +239,7 @@ ptw32_threadStart (void *vthreadParms) #else /* __CLEANUP_C */ -#ifdef __CLEANUP_CXX +#if defined(__CLEANUP_CXX) ptw32_oldTerminate = set_terminate (&ptw32_terminate); diff --git a/ptw32_throw.c b/ptw32_throw.c index 19f9e11..4846306 100644 --- a/ptw32_throw.c +++ b/ptw32_throw.c @@ -46,7 +46,7 @@ * 'implicit' POSIX threads for each of the possible language modes (C, * C++, and SEH). */ -#ifdef _MSC_VER +#if defined(_MSC_VER) /* * Ignore the warning: * "C++ exception specification ignored except to indicate that @@ -56,7 +56,7 @@ #endif void ptw32_throw (DWORD exception) -#ifdef __CLEANUP_CXX +#if defined(__CLEANUP_CXX) throw(ptw32_exception_cancel,ptw32_exception_exit) #endif { @@ -66,7 +66,7 @@ ptw32_throw (DWORD exception) */ ptw32_thread_t * sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) DWORD exceptionInformation[3]; #endif @@ -117,7 +117,7 @@ ptw32_throw (DWORD exception) } -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) exceptionInformation[0] = (DWORD) (exception); @@ -128,14 +128,14 @@ ptw32_throw (DWORD exception) #else /* __CLEANUP_SEH */ -#ifdef __CLEANUP_C +#if defined(__CLEANUP_C) ptw32_pop_cleanup_all (1); longjmp (sp->start_mark, exception); #else /* __CLEANUP_C */ -#ifdef __CLEANUP_CXX +#if defined(__CLEANUP_CXX) switch (exception) { @@ -173,7 +173,7 @@ ptw32_pop_cleanup_all (int execute) DWORD ptw32_get_exception_services_code (void) { -#ifdef __CLEANUP_SEH +#if defined(__CLEANUP_SEH) return EXCEPTION_PTW32_SERVICES; diff --git a/ptw32_timespec.c b/ptw32_timespec.c index 6a2cb56..c448645 100644 --- a/ptw32_timespec.c +++ b/ptw32_timespec.c @@ -39,7 +39,7 @@ #include "implement.h" -#ifdef NEED_FTIME +#if defined(NEED_FTIME) /* * time between jan 1, 1601 and jan 1, 1970 in units of 100 nanoseconds @@ -36,37 +36,37 @@ * if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifndef _SCHED_H +#if !defined(_SCHED_H) #define _SCHED_H -#undef PTW32_LEVEL +#undef PTW32_SCHED_LEVEL #if defined(_POSIX_SOURCE) -#define PTW32_LEVEL 0 +#define PTW32_SCHED_LEVEL 0 /* Early POSIX */ #endif #if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 -#undef PTW32_LEVEL -#define PTW32_LEVEL 1 +#undef PTW32_SCHED_LEVEL +#define PTW32_SCHED_LEVEL 1 /* Include 1b, 1c and 1d */ #endif #if defined(INCLUDE_NP) -#undef PTW32_LEVEL -#define PTW32_LEVEL 2 +#undef PTW32_SCHED_LEVEL +#define PTW32_SCHED_LEVEL 2 /* Include Non-Portable extensions */ #endif -#define PTW32_LEVEL_MAX 3 +#define PTW32_SCHED_LEVEL_MAX 3 #if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_LEVEL) -#define PTW32_LEVEL PTW32_LEVEL_MAX +#define PTW32_SCHED_LEVEL PTW32_SCHED_LEVEL_MAX /* Include everything */ #endif -#if __GNUC__ && ! defined (__declspec) +#if defined(__GNUC__) && !defined(__declspec) # error Please upgrade your GNU compiler to one that supports __declspec. #endif @@ -77,7 +77,7 @@ * be imported correctly. */ #if !defined(PTW32_STATIC_LIB) -# ifdef PTW32_BUILD +# if defined(PTW32_BUILD) # define PTW32_DLLPORT __declspec (dllexport) # else # define PTW32_DLLPORT __declspec (dllimport) @@ -91,7 +91,7 @@ * which is only used when building the pthread-win32 libraries. */ -#ifndef PTW32_CONFIG_H +#if !defined(PTW32_CONFIG_H) # if defined(WINCE) # define NEED_ERRNO # define NEED_SEM @@ -108,16 +108,16 @@ * */ -#if PTW32_LEVEL >= PTW32_LEVEL_MAX -#ifdef NEED_ERRNO +#if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX +#if defined(NEED_ERRNO) #include "need_errno.h" #else #include <errno.h> #endif -#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ +#endif /* PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX */ #if (defined(__MINGW64__) || defined(__MINGW32__)) || defined(_UWIN) -# if PTW32_LEVEL >= PTW32_LEVEL_MAX +# if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX /* For pid_t */ # include <sys/types.h> /* Required by Unix 98 */ @@ -143,7 +143,7 @@ struct sched_param { int sched_priority; }; -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ @@ -172,12 +172,12 @@ PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid); ( errno = ENOTSUP, (int) -1 ) -#ifdef __cplusplus +#if defined(__cplusplus) } /* End of extern "C" */ #endif /* __cplusplus */ -#undef PTW32_LEVEL -#undef PTW32_LEVEL_MAX +#undef PTW32_SCHED_LEVEL +#undef PTW32_SCHED_LEVEL_MAX #endif /* !_SCHED_H */ diff --git a/sem_close.c b/sem_close.c index 2f95c87..6d7280f 100644 --- a/sem_close.c +++ b/sem_close.c @@ -46,7 +46,7 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif @@ -112,7 +112,7 @@ sem_init (sem_t * sem, int pshared, unsigned int value) if (pthread_mutex_init(&s->lock, NULL) == 0) { -#ifdef NEED_SEM +#if defined(NEED_SEM) s->sem = CreateEvent (NULL, PTW32_FALSE, /* auto (not manual) reset */ @@ -46,7 +46,7 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif @@ -93,7 +93,7 @@ sem_post (sem_t * sem) if (s->value < SEM_VALUE_MAX) { -#ifdef NEED_SEM +#if defined(NEED_SEM) if (++s->value <= 0 && !SetEvent(s->sem)) { diff --git a/sem_post_multiple.c b/sem_post_multiple.c index 3d1e4ef..44c168c 100644 --- a/sem_post_multiple.c +++ b/sem_post_multiple.c @@ -101,7 +101,7 @@ sem_post_multiple (sem_t * sem, int count) s->value += count; if (waiters > 0) { -#ifdef NEED_SEM +#if defined(NEED_SEM) if (SetEvent(s->sem)) { waiters--; diff --git a/sem_timedwait.c b/sem_timedwait.c index 1db6217..103fb9e 100644 --- a/sem_timedwait.c +++ b/sem_timedwait.c @@ -77,7 +77,7 @@ ptw32_sem_timedwait_cleanup (void * args) { /* Indicate we're no longer waiting */ s->value++; -#ifdef NEED_SEM +#if defined(NEED_SEM) if (s->value > 0) { s->leftToUnblock = 0; @@ -177,7 +177,7 @@ sem_timedwait (sem_t * sem, const struct timespec *abstime) if (v < 0) { -#ifdef NEED_SEM +#if defined(NEED_SEM) int timedout; #endif sem_timedwait_cleanup_args_t cleanup_args; @@ -190,7 +190,7 @@ sem_timedwait (sem_t * sem, const struct timespec *abstime) #endif /* Must wait */ pthread_cleanup_push(ptw32_sem_timedwait_cleanup, (void *) &cleanup_args); -#ifdef NEED_SEM +#if defined(NEED_SEM) timedout = #endif result = pthreadCancelableTimedWait (s->sem, milliseconds); @@ -199,7 +199,7 @@ sem_timedwait (sem_t * sem, const struct timespec *abstime) #pragma inline_depth() #endif -#ifdef NEED_SEM +#if defined(NEED_SEM) if (!timedout && pthread_mutex_lock (&s->lock) == 0) { diff --git a/sem_unlink.c b/sem_unlink.c index a6c6f81..fb80569 100644 --- a/sem_unlink.c +++ b/sem_unlink.c @@ -46,7 +46,7 @@ #include "implement.h" /* ignore warning "unreferenced formal parameter" */ -#ifdef _MSC_VER +#if defined(_MSC_VER) #pragma warning( disable : 4100 ) #endif @@ -63,7 +63,7 @@ ptw32_sem_wait_cleanup(void * sem) if (*((sem_t *)sem) != NULL && !(WaitForSingleObject(s->sem, 0) == WAIT_OBJECT_0)) { ++s->value; -#ifdef NEED_SEM +#if defined(NEED_SEM) if (s->value > 0) { s->leftToUnblock = 0; @@ -151,7 +151,7 @@ sem_wait (sem_t * sem) #pragma inline_depth() #endif } -#ifdef NEED_SEM +#if defined(NEED_SEM) if (!result && pthread_mutex_lock (&s->lock) == 0) { diff --git a/semaphore.c b/semaphore.c index 6b2b10e..64fc0e3 100644 --- a/semaphore.c +++ b/semaphore.c @@ -45,7 +45,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#ifndef NEED_FTIME +#if !defined(NEED_FTIME) # include <sys/timeb.h> #endif diff --git a/semaphore.h b/semaphore.h index 891c929..c6e9407 100644 --- a/semaphore.h +++ b/semaphore.h @@ -39,33 +39,33 @@ #if !defined( SEMAPHORE_H ) #define SEMAPHORE_H -#undef PTW32_LEVEL +#undef PTW32_SEMAPHORE_LEVEL #if defined(_POSIX_SOURCE) -#define PTW32_LEVEL 0 +#define PTW32_SEMAPHORE_LEVEL 0 /* Early POSIX */ #endif #if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 -#undef PTW32_LEVEL -#define PTW32_LEVEL 1 +#undef PTW32_SEMAPHORE_LEVEL +#define PTW32_SEMAPHORE_LEVEL 1 /* Include 1b, 1c and 1d */ #endif #if defined(INCLUDE_NP) -#undef PTW32_LEVEL -#define PTW32_LEVEL 2 +#undef PTW32_SEMAPHORE_LEVEL +#define PTW32_SEMAPHORE_LEVEL 2 /* Include Non-Portable extensions */ #endif -#define PTW32_LEVEL_MAX 3 +#define PTW32_SEMAPHORE_LEVEL_MAX 3 -#if !defined(PTW32_LEVEL) -#define PTW32_LEVEL PTW32_LEVEL_MAX +#if !defined(PTW32_SEMAPHORE_LEVEL) +#define PTW32_SEMAPHORE_LEVEL PTW32_SEMAPHORE_LEVEL_MAX /* Include everything */ #endif -#if __GNUC__ && ! defined (__declspec) +#if defined(__GNUC__) && ! defined (__declspec) # error Please upgrade your GNU compiler to one that supports __declspec. #endif @@ -76,7 +76,7 @@ * be imported correctly. */ #if !defined(PTW32_STATIC_LIB) -# ifdef PTW32_BUILD +# if defined(PTW32_BUILD) # define PTW32_DLLPORT __declspec (dllexport) # else # define PTW32_DLLPORT __declspec (dllimport) @@ -90,7 +90,7 @@ * which is only used when building the pthread-win32 libraries. */ -#ifndef PTW32_CONFIG_H +#if !defined(PTW32_CONFIG_H) # if defined(WINCE) # define NEED_ERRNO # define NEED_SEM @@ -107,22 +107,22 @@ * */ -#if PTW32_LEVEL >= PTW32_LEVEL_MAX -#ifdef NEED_ERRNO +#if PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX +#if defined(NEED_ERRNO) #include "need_errno.h" #else #include <errno.h> #endif -#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ +#endif /* PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX */ #define _POSIX_SEMAPHORES -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ -#ifndef HAVE_MODE_T +#if !defined(HAVE_MODE_T) typedef unsigned int mode_t; #endif @@ -159,11 +159,11 @@ PTW32_DLLPORT int __cdecl sem_unlink (const char * name); PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem, int * sval); -#ifdef __cplusplus +#if defined(__cplusplus) } /* End of extern "C" */ #endif /* __cplusplus */ -#undef PTW32_LEVEL -#undef PTW32_LEVEL_MAX +#undef PTW32_SEMAPHORE_LEVEL +#undef PTW32_SEMAPHORE_LEVEL_MAX #endif /* !SEMAPHORE_H */ @@ -84,7 +84,7 @@ #include "pthread.h" #include "implement.h" -#if HAVE_SIGSET_T +#if defined(HAVE_SIGSET_T) static void ptw32_signal_thread () diff --git a/tests/ChangeLog b/tests/ChangeLog index f5d8d08..843837f 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2011-05-11 Ross Johnson <ross.johnson at homemail.com.au> + + * GNUmakefile (GCE-debug): New target; expects pthreadGCE2d.dll. + 2011-05-05 Ross Johnson <ross.johnson at homemail.com.au> * openmp1.c: Add missing test; used to comfirm that this diff --git a/tests/GNUmakefile b/tests/GNUmakefile index 9a46b2c..e0e9de5 100644 --- a/tests/GNUmakefile +++ b/tests/GNUmakefile @@ -204,6 +204,9 @@ GCE-bench: GC-debug: $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" OPT="${DOPT}" DLL_VER="$(DLL_VER)d" all-pass +GCE-debug: + $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-fopenmp -D__CLEANUP_CXX" OPT="${DOPT}" DLL_VER="$(DLL_VER)d" all-pass + GC-bench-debug: $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" OPT="${OPT}" DLL_VER="$(DLL_VER)d" all-bench diff --git a/tests/SIZES.GCE b/tests/SIZES.GCE index 7048d3a..709114d 100755 --- a/tests/SIZES.GCE +++ b/tests/SIZES.GCE @@ -1,11 +1,11 @@ Sizes of pthreads-win32 structs
-------------------------------
pthread_t 8
- ptw32_thread_t 76
+ ptw32_thread_t 96
pthread_attr_t_ 28
sem_t_ 12
- pthread_mutex_t_ 24
- pthread_mutexattr_t_ 8
+ pthread_mutex_t_ 28
+ pthread_mutexattr_t_ 12
pthread_spinlock_t_ 8
pthread_barrier_t_ 36
pthread_barrierattr_t_ 4
diff --git a/tests/SIZES.VCE b/tests/SIZES.VCE index 7048d3a..709114d 100644 --- a/tests/SIZES.VCE +++ b/tests/SIZES.VCE @@ -1,11 +1,11 @@ Sizes of pthreads-win32 structs
-------------------------------
pthread_t 8
- ptw32_thread_t 76
+ ptw32_thread_t 96
pthread_attr_t_ 28
sem_t_ 12
- pthread_mutex_t_ 24
- pthread_mutexattr_t_ 8
+ pthread_mutex_t_ 28
+ pthread_mutexattr_t_ 12
pthread_spinlock_t_ 8
pthread_barrier_t_ 36
pthread_barrierattr_t_ 4
diff --git a/tests/cancel2.c b/tests/cancel2.c index d7c7f86..83cb6eb 100644 --- a/tests/cancel2.c +++ b/tests/cancel2.c @@ -80,7 +80,7 @@ * Create NUMTHREADS threads in addition to the Main thread. */ enum { - NUMTHREADS = 1 + NUMTHREADS = 4 }; typedef struct bag_t_ bag_t; diff --git a/tests/reuse2.c b/tests/reuse2.c index c4db811..362e547 100644 --- a/tests/reuse2.c +++ b/tests/reuse2.c @@ -111,7 +111,8 @@ main() for (i = 0; i < NUMTHREADS; i++) { - assert(pthread_create(&t[i], &attr, func, NULL) == 0); + while(pthread_create(&t[i], &attr, func, NULL) != 0) + Sleep(1); } while (NUMTHREADS > InterlockedExchangeAdd((LPLONG)&done, 0L)) @@ -41,13 +41,13 @@ * If using the default (no __CLEANUP_* defined), pthread.h will define it * as __CLEANUP_C. */ -#ifdef _WIN64 +#if defined(_WIN64) # define PTW32_ARCH "64 bit" #else # define PTW32_ARCH "32 bit" #endif -#ifdef PTW32_RC_MSC +#if defined(PTW32_RC_MSC) # if defined(__CLEANUP_C) # define PTW32_VERSIONINFO_NAME "pthreadVC\0" # define PTW32_VERSIONINFO_DESCRIPTION "MS C " PTW32_ARCH "\0" |