From 75f8ad67d45d48b9cdde5a298083881790c76c73 Mon Sep 17 00:00:00 2001 From: rpj Date: Thu, 31 Jan 2002 06:56:03 +0000 Subject: 2002-01-27 Ross Johnson * mutex.c (pthread_mutex_timedlock): New function suggested by Alexander Terekhov. The logic required to implement this properly came from Alexander, with some collaboration with Thomas Pfaff. (pthread_mutex_unlock): Wrap the waiters check and sema post in a critical section to prevent a race with pthread_mutex_timedlock. (ptw32_timed_semwait): New function; returns a special result if the absolute timeout parameter represents a time already passed when called; used by pthread_mutex_timedwait(). Have deliberately not reused the name "ptw32_sem_timedwait" because they are not the same routine. * condvar.c (ptw32_cond_timedwait): Use the new sem_timedwait() instead of ptw32_sem_timedwait(), which now has a different function. See previous. * implement.h: Remove prototype for ptw32_sem_timedwait. See next. (pthread_mutex_t_): Add critical section element for access to lock_idx during mutex post-timeout processing. * semaphore.h (sem_timedwait): See next. * semaphore.c (sem_timedwait): See next. * private.c (ptw32_sem_timedwait): Move to semaphore.c and rename as sem_timedwait(). 2002-01-18 Ross Johnson * sync.c (pthread_join): Was getting the exit code from the calling thread rather than the joined thread if defined(__MINGW32__) && !defined(__MSVCRT__). 2002-01-15 Ross Johnson * pthread.h: Unless the build explicitly defines __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then the build defaults to __CLEANUP_C style cleanup. This style uses setjmp/longjmp in the cancelation and thread exit implementations and therefore won't do stack unwinding if linked to applications that have it (e.g. C++ apps). This is currently consistent with most/all commercial Unix POSIX threads implementations. * spin.c (pthread_spin_init): Edit renamed function call. * nonportable.c (pthread_num_processors_np): New. (pthread_getprocessors_np): Renamed to ptw32_getprocessors and moved to private.c. * private.c (pthread_getprocessors): Moved here from nonportable.c. * pthread.def (pthread_getprocessors_np): Removed from export list. * rwlock.c (pthread_rwlockattr_init): New. (pthread_rwlockattr_destroy): New. (pthread_rwlockattr_getpshared): New. (pthread_rwlockattr_setpshared): New. --- tests/Makefile | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'tests/Makefile') diff --git a/tests/Makefile b/tests/Makefile index 9eade03..74c9b8b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -18,10 +18,12 @@ VCEDLL = pthreadVCE.dll VSEFLAGS = /D__CLEANUP_SEH VSELIB = pthreadVSE.lib VSEDLL = pthreadVSE.dll -#C cleanup code +# C cleanup code VCFLAGS = /D__CLEANUP_C VCLIB = pthreadVC.lib VCDLL = pthreadVC.dll +# C++ Exceptions in application - using VC version of pthreads dll +VCXFLAGS = /GX /TP /D__CLEANUP_C CFLAGS= /W3 /WX /MT /nologo /Yd /Zi -D_WIN32_WINNT=0x400 LFLAGS= /INCREMENTAL:NO @@ -67,17 +69,21 @@ BENCHRESULTS = \ all: @ $(ECHO) Run one of the following command lines: - @ $(ECHO) nmake clean VCE (to test using MSVC dll with C++ exception handling) - @ $(ECHO) nmake clean VSE (to test using MSVC dll with structured exception handling) - @ $(ECHO) nmake clean VC (to test using MSVC dll with C cleanup code) - @ $(ECHO) nmake clean VCE-bench (to benchtest using MSVC dll with C++ exception handling) - @ $(ECHO) nmake clean VSE-bench (to benchtest using MSVC dll with structured exception handling) - @ $(ECHO) nmake clean VC-bench (to benchtest using MSVC dll with C cleanup code) + @ $(ECHO) nmake clean VCE (to test using the VCE dll with VC++ EH applications) + @ $(ECHO) nmake clean VSE (to test using VSE dll with VC (SEH) applications) + @ $(ECHO) nmake clean VC (to test using VC dll with VC (no EH) applications) + @ $(ECHO) nmake clean VCX (to test using VC dll with VC++ (EH) applications) + @ $(ECHO) nmake clean VCE-bench (to benchtest using VCE dll with C++ bench app) + @ $(ECHO) nmake clean VSE-bench (to benchtest using VSE dll with SEH bench app) + @ $(ECHO) nmake clean VC-bench (to benchtest using VC dll with C bench app) + @ $(ECHO) nmake clean VCX-bench (to benchtest using VC dll with C++ bench app) auto: @ nmake clean VCE @ nmake clean VSE @ nmake clean VC + @ nmake clean VCX + @ nmake clean VC-bench tests: $(CPLIB) $(CPDLL) $(CPHDR) $(PASSES) @ $(ECHO) ALL TESTS PASSED! Congratulations! @@ -106,6 +112,9 @@ VSE: VC: @ nmake TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" tests +VCX: + @ nmake TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" tests + VCE-bench: @ nmake TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" benchtests @@ -115,8 +124,11 @@ VSE-bench: VC-bench: @ nmake TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" benchtests +VCX-bench: + @ nmake TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" benchtests + .c.exe: - @ $(ECHO) Compiling $@ + @ $(ECHO) $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB) @ $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB) .c.pre: -- cgit v1.2.3