From b41f74438672dd682bc01ae818cb3da654f22c1e Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 13 Feb 2013 10:41:10 +0100 Subject: Updated to latest CVS version of pthreads --- pthreads/tests/Bmakefile | 26 ++- pthreads/tests/ChangeLog | 201 ++++++++++++++++- pthreads/tests/GNUmakefile | 448 +++++++++++--------------------------- pthreads/tests/Makefile | 488 ++++++++++++------------------------------ pthreads/tests/SIZES.GC | 21 -- pthreads/tests/SIZES.GCE | 21 -- pthreads/tests/SIZES.VC | 21 -- pthreads/tests/SIZES.VCE | 21 -- pthreads/tests/SIZES.VSE | 21 -- pthreads/tests/Wmakefile | 28 ++- pthreads/tests/affinity1.c | 111 ++++++++++ pthreads/tests/affinity2.c | 102 +++++++++ pthreads/tests/affinity3.c | 100 +++++++++ pthreads/tests/affinity4.c | 70 ++++++ pthreads/tests/affinity5.c | 103 +++++++++ pthreads/tests/barrier1.c | 9 +- pthreads/tests/barrier2.c | 9 +- pthreads/tests/barrier3.c | 9 +- pthreads/tests/barrier4.c | 9 +- pthreads/tests/barrier5.c | 9 +- pthreads/tests/barrier6.c | 235 ++++++++++---------- pthreads/tests/benchlib.c | 9 +- pthreads/tests/benchtest.h | 9 +- pthreads/tests/benchtest1.c | 10 +- pthreads/tests/benchtest2.c | 10 +- pthreads/tests/benchtest3.c | 10 +- pthreads/tests/benchtest4.c | 10 +- pthreads/tests/benchtest5.c | 10 +- pthreads/tests/cancel1.c | 35 +-- pthreads/tests/cancel2.c | 59 ++--- pthreads/tests/cancel3.c | 19 +- pthreads/tests/cancel4.c | 21 +- pthreads/tests/cancel5.c | 17 +- pthreads/tests/cancel6a.c | 10 +- pthreads/tests/cancel6d.c | 10 +- pthreads/tests/cancel7.c | 11 +- pthreads/tests/cancel8.c | 11 +- pthreads/tests/cancel9.c | 15 +- pthreads/tests/cleanup0.c | 17 +- pthreads/tests/cleanup1.c | 45 ++-- pthreads/tests/cleanup2.c | 15 +- pthreads/tests/cleanup3.c | 15 +- pthreads/tests/common.mk | 53 +++++ pthreads/tests/condvar1.c | 9 +- pthreads/tests/condvar1_1.c | 9 +- pthreads/tests/condvar1_2.c | 9 +- pthreads/tests/condvar2.c | 17 +- pthreads/tests/condvar2_1.c | 9 +- pthreads/tests/condvar3.c | 9 +- pthreads/tests/condvar3_1.c | 9 +- pthreads/tests/condvar3_2.c | 9 +- pthreads/tests/condvar3_3.c | 9 +- pthreads/tests/condvar4.c | 9 +- pthreads/tests/condvar5.c | 9 +- pthreads/tests/condvar6.c | 11 +- pthreads/tests/condvar7.c | 13 +- pthreads/tests/condvar8.c | 11 +- pthreads/tests/condvar9.c | 15 +- pthreads/tests/context1.c | 284 ++++++++++++------------ pthreads/tests/context2.c | 157 ++++++++++++++ pthreads/tests/count1.c | 9 +- pthreads/tests/create1.c | 9 +- pthreads/tests/create2.c | 9 +- pthreads/tests/create3.c | 110 ++++++++++ pthreads/tests/delay1.c | 9 +- pthreads/tests/delay2.c | 9 +- pthreads/tests/detach1.c | 9 +- pthreads/tests/equal1.c | 9 +- pthreads/tests/errno1.c | 11 +- pthreads/tests/exception1.c | 15 +- pthreads/tests/exception2.c | 24 ++- pthreads/tests/exception3.c | 41 ++-- pthreads/tests/exception3_0.c | 187 ++++++++++++++++ pthreads/tests/exit1.c | 12 +- pthreads/tests/exit2.c | 9 +- pthreads/tests/exit3.c | 9 +- pthreads/tests/exit4.c | 11 +- pthreads/tests/exit5.c | 11 +- pthreads/tests/eyal1.c | 16 +- pthreads/tests/inherit1.c | 9 +- pthreads/tests/join0.c | 9 +- pthreads/tests/join1.c | 9 +- pthreads/tests/join2.c | 9 +- pthreads/tests/join3.c | 9 +- pthreads/tests/join4.c | 87 ++++++++ pthreads/tests/kill1.c | 9 +- pthreads/tests/mutex1.c | 9 +- pthreads/tests/mutex1e.c | 9 +- pthreads/tests/mutex1n.c | 9 +- pthreads/tests/mutex1r.c | 9 +- pthreads/tests/mutex2.c | 9 +- pthreads/tests/mutex2e.c | 9 +- pthreads/tests/mutex2r.c | 9 +- pthreads/tests/mutex3.c | 9 +- pthreads/tests/mutex3e.c | 9 +- pthreads/tests/mutex3r.c | 9 +- pthreads/tests/mutex4.c | 9 +- pthreads/tests/mutex5.c | 9 +- pthreads/tests/mutex6.c | 12 +- pthreads/tests/mutex6e.c | 12 +- pthreads/tests/mutex6es.c | 12 +- pthreads/tests/mutex6n.c | 16 +- pthreads/tests/mutex6r.c | 12 +- pthreads/tests/mutex6rs.c | 12 +- pthreads/tests/mutex6s.c | 12 +- pthreads/tests/mutex7.c | 12 +- pthreads/tests/mutex7e.c | 12 +- pthreads/tests/mutex7n.c | 12 +- pthreads/tests/mutex7r.c | 12 +- pthreads/tests/mutex8.c | 1 - pthreads/tests/mutex8e.c | 1 - pthreads/tests/mutex8n.c | 1 - pthreads/tests/mutex8r.c | 1 - pthreads/tests/once1.c | 9 +- pthreads/tests/once2.c | 22 +- pthreads/tests/once3.c | 40 +++- pthreads/tests/once4.c | 32 ++- pthreads/tests/openmp1.c | 8 +- pthreads/tests/priority1.c | 9 +- pthreads/tests/priority2.c | 9 +- pthreads/tests/reuse1.c | 9 +- pthreads/tests/reuse2.c | 9 +- pthreads/tests/robust1.c | 9 +- pthreads/tests/robust2.c | 9 +- pthreads/tests/robust3.c | 9 +- pthreads/tests/robust4.c | 9 +- pthreads/tests/robust5.c | 9 +- pthreads/tests/runorder.mk | 149 +++++++++++++ pthreads/tests/rwlock1.c | 9 +- pthreads/tests/rwlock2.c | 9 +- pthreads/tests/rwlock2_t.c | 9 +- pthreads/tests/rwlock3.c | 9 +- pthreads/tests/rwlock3_t.c | 9 +- pthreads/tests/rwlock4.c | 9 +- pthreads/tests/rwlock4_t.c | 9 +- pthreads/tests/rwlock5.c | 9 +- pthreads/tests/rwlock5_t.c | 9 +- pthreads/tests/rwlock6.c | 9 +- pthreads/tests/rwlock6_t.c | 9 +- pthreads/tests/rwlock6_t2.c | 9 +- pthreads/tests/self1.c | 139 ++++++------ pthreads/tests/self2.c | 9 +- pthreads/tests/semaphore1.c | 23 +- pthreads/tests/semaphore2.c | 9 +- pthreads/tests/semaphore3.c | 61 +++--- pthreads/tests/semaphore4.c | 9 +- pthreads/tests/semaphore4t.c | 9 +- pthreads/tests/semaphore5.c | 207 +++++++++--------- pthreads/tests/sequence1.c | 9 +- pthreads/tests/spin1.c | 9 +- pthreads/tests/spin2.c | 9 +- pthreads/tests/spin3.c | 9 +- pthreads/tests/spin4.c | 9 +- pthreads/tests/stress1.c | 9 +- pthreads/tests/test.h | 20 +- pthreads/tests/tryentercs.c | 9 +- pthreads/tests/tryentercs2.c | 9 +- pthreads/tests/tsd1.c | 9 +- pthreads/tests/tsd2.c | 9 +- pthreads/tests/valid1.c | 9 +- pthreads/tests/valid2.c | 9 +- 161 files changed, 3057 insertions(+), 1975 deletions(-) delete mode 100644 pthreads/tests/SIZES.GC delete mode 100644 pthreads/tests/SIZES.GCE delete mode 100644 pthreads/tests/SIZES.VC delete mode 100644 pthreads/tests/SIZES.VCE delete mode 100644 pthreads/tests/SIZES.VSE create mode 100755 pthreads/tests/affinity1.c create mode 100755 pthreads/tests/affinity2.c create mode 100755 pthreads/tests/affinity3.c create mode 100755 pthreads/tests/affinity4.c create mode 100755 pthreads/tests/affinity5.c create mode 100755 pthreads/tests/common.mk create mode 100755 pthreads/tests/context2.c create mode 100755 pthreads/tests/create3.c create mode 100755 pthreads/tests/exception3_0.c create mode 100755 pthreads/tests/join4.c create mode 100755 pthreads/tests/runorder.mk (limited to 'pthreads/tests') diff --git a/pthreads/tests/Bmakefile b/pthreads/tests/Bmakefile index df2ac1b1b..f4bdd9cc5 100644 --- a/pthreads/tests/Bmakefile +++ b/pthreads/tests/Bmakefile @@ -5,7 +5,7 @@ # # Pthreads-win32 - POSIX Threads Library for Win32 # Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors +# Copyright(C) 1999,2012 Pthreads-win32 contributors # # Contact Email: rpj@callisto.canberra.edu.au # @@ -64,7 +64,7 @@ BCXFLAGS = -D__CLEANUP_C CPLIB = $(BCLIB) CPDLL = $(BCDLL) -CFLAGS= -q $(OPTIM) /D_WIN32_WINNT=0x400 -w -tWC -tWM -4 -w-aus -w-asc -w-par +CFLAGS= -q $(OPTIM) -w -tWC -tWM -4 -w-aus -w-asc -w-par LFLAGS= INCLUDES=-I. BUILD_DIR=.. @@ -76,7 +76,7 @@ EHFLAGS = # If a test case returns a non-zero exit code to the shell, make will # stop. -PASSES= loadfree.pass \ +PASSES= \ errno1.pass \ self1.pass mutex5.pass \ mutex1.pass mutex1n.pass mutex1e.pass mutex1r.pass \ @@ -87,7 +87,7 @@ PASSES= loadfree.pass \ exit1.pass create1.pass create2.pass reuse1.pass reuse2.pass equal1.pass \ sequence1.pass kill1.pass valid1.pass valid2.pass \ exit2.pass exit3.pass exit4.pass exit5.pass \ - join0.pass join1.pass detach1.pass join2.pass join3.pass \ + join0.pass join1.pass detach1.pass join2.pass join3.pass join4.pass \ mutex4.pass mutex6.pass mutex6n.pass mutex6e.pass mutex6r.pass \ mutex6s.pass mutex6es.pass mutex6rs.pass \ mutex7.pass mutex7n.pass mutex7e.pass mutex7r.pass \ @@ -112,8 +112,10 @@ PASSES= loadfree.pass \ cleanup0.pass cleanup1.pass cleanup2.pass cleanup3.pass \ priority1.pass priority2.pass inherit1.pass \ spin1.pass spin2.pass spin3.pass spin4.pass \ - exception1.pass exception2.pass exception3.pass \ - cancel9.pass stress1.pass + exception1.pass exception2.pass exception3_0.pass exception3.pass \ + cancel9.pass \ + affinity1.pass affinity2.pass affinity3.pass affinity4.pass affinity5.pass \ + stress1.pass BENCHRESULTS = \ benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench @@ -214,6 +216,7 @@ clean: - $(RM) *.o - $(RM) *.asm - $(RM) *.exe + - $(RM) *.manifest - $(RM) *.pass - $(RM) *.bench - $(RM) *.log @@ -223,6 +226,12 @@ benchtest2.bench: benchtest3.bench: benchtest4.bench: benchtest5.bench: + +affinity1.pass: +affinity2.pass: affinity1.pass +affinity3.pass: affinity2.pass +affinity4.pass: affinity3.pass +affinity5.pass: affinity4.pass barrier1.pass: semaphore4.pass barrier2.pass: barrier1.pass barrier3.pass: barrier2.pass @@ -269,7 +278,8 @@ equal1.pass: create1.pass errno1.pass: mutex3.pass exception1.pass: cancel4.pass exception2.pass: exception1.pass -exception3.pass: exception2.pass +exception3_0.pass: exception2.pass +exception3.pass: exception3_0.pass exit1.pass: exit2.pass: create1.pass exit3.pass: create1.pass @@ -281,8 +291,8 @@ join0.pass: create1.pass join1.pass: create1.pass join2.pass: create1.pass join3.pass: join2.pass +join4.pass: join3.pass kill1.pass: -loadfree.pass: pthread.dll mutex1.pass: self1.pass mutex1n.pass: mutex1.pass mutex1e.pass: mutex1.pass diff --git a/pthreads/tests/ChangeLog b/pthreads/tests/ChangeLog index dfb4f4555..5cb92fefa 100644 --- a/pthreads/tests/ChangeLog +++ b/pthreads/tests/ChangeLog @@ -1,3 +1,192 @@ +2012-10-16 Ross Johnson + + * GNUmakefile (EXTRAVERSION): Naming option for libraries to be + consistent with MSVS Makefile; no longer automatically based on + ARCH setting. + +2012-10-10 Ross Johnson + + * cancel1.c: Fix comment typo. + * Makefile: Adding functionality to support rapid turnaround of + individual or small sets of tests; removed loadfree test. + * GNUmakefile: Likewise. + * Bmakefile: Removed loadfree test. + * Wmakefile: Likewise. + * common.mk: New makefile include file; split out common macros. + * runorder.mk: New makefile include file; split out run order rules + to allow selective inclusion. + * loadfree.c: Removed from suite; not required; unnecessarily + complicates the makefiles. + +2012-10-04 Ross Johnson + + * join4.c: Modified for pthread_tryjoin_np tests. + +2012-09-29 Ross Johnson + + * Makefile: Align target names with build makefile target names + following changes there; remove the separate static tests list. + * GNUmakefile: Likewise; consolidate rules. + +2012-09-25 Ross Johnson + + * context1.c (anotherEnding): Should exit the thread, not return. + +2012-09-23 Ross Johnson + + * Makefile: Add secondary target names to existing test targets so + we can output how the library was built, e.g. "Running VC-inlined test". + This is useful when making "all-tests" from the library build Makefile. + * GNUmakefile: Similarly. + +2012-09-22 Ross Johnson + + * GNUmakefile: Do what Makefile does and print the make target + when running each test. + +2012-09-22 Daniel Richard. G + + * Makefile: This reverts an earlier change of mine. In some + versions of nmake, $(MAKE) is a full path, which utterly futzes + up the "make help" output; regularized the test targets, so we + have e.g. VSE-static now; regularized the parentheticals; + removed a spurious use of $(DLL_VER); new test targets: VCX-debug + {VSE,VCX}-static{,-debug}; fixed the {VC,VCE}-static-debug targets. + * exception3.c: Narrowly exclude this test from the known-bad VS2005 + configuration (By the way: I downloaded and tested with what is + presumably the most up-to-date MSVCR80.DLL. Same deal.); use + pthread_win32_set_terminate_np() when appropriate, and verify that + it has an effect different from calling set_terminate(); no need for + that assert(); it's overly pedantic. + * exception3_0.c: Same VS2005 exclusion. + * once3.c: Put in a note so that users know what to do if the test + hangs or exits abnormally (I figured this is better than narrowly + disabling pthread_cancel() on MSVC6, since cancellation does seem to + work correctly with /EHa, and we don't have any way of telling at + compile time whether /EHs or /EHa is in use). + * once4.c: Likewise. + * semaphore1.c: s/PTW32_BROKEN_ERRNO/PTW32_USES_SEPARATE_CRT/ + +2012-09-22 Ross Johnson + + * pthread_win32_attach_detach_np.c (pthread_win32_detach_thread_np): + Check for NULL ptw32_selfThreadKey before call to TlsSetKey(). Need + to find where this is being set to NULL before this point. Was + consistently failing tests/seamphore3.c in all GC static builds and + never seen in GC DLL builds. May also be responsible for + inconsistent VCE fails on that test, although the fail mode was + different - the latter hangs the test while the former segfaults. + +2012-09-22 Ross Johnson + + * GNUmakefile (GC-static-debug): New make target. + +2012-09-21 Ross Johnson + + * affinity1.c: New test for new process CPU affinity routines. + * affinity2.c: New test for new process CPU affinity routines. + * affinity3.c: New test for new process and thread CPU affinity routines. + * affinity4.c: New test for new process and thread CPU affinity routines. + * affinity5.c: New test for new process and thread CPU affinity routines. + * Makefile: Add new tests. + * GNUmakfile: Likewise. + * Bmakfile: Likewise. + * Wmakfile: Likewise. + +2012-09-09 Ross Johnson + + * exception3.c: Rewrite to fix strategy. + * exception3_0.c: New test. + * exception2.c: Reduce sleep time to speed up test. + * Makefile (exception3_0.*): Add new test. + * GNUmakefile (exception3_0.*): Add new test. + * Bmakefile (exception3_0.*): Add new test. + * Wmakefile (exception3_0.*): Add new test. + +2012-09-05 Daniel Richard. G + + * exception2.c: Fix result codes to avoid false negative failures. + * cancel9.c: cosmetic change. + * GNUmakefile (clean): delete manifest files. + * Bmakefile: Likewise. + * Wmakefile: Likewise. + * Makefile: Likewise. + +2012-09-04 Ross Johnson + + * Makefile (VCEFLAGS): Changed from /EHsc to /EHs which was causing + tests/once3.c to hang, suspect exceptions not being thrown from + extern C routines. + * cancel2.c: Rewrite to use a barrier for thread control; remove + asyncronous cancel type which was a massive bug in the test strategy + and cusing SEGFAULTs (access violations). + * eyal1.c: Remove unused variable 'i' to clear compiler warning. + * context1.c: Remove call to pthread_exit() in alternate ending to + quell error in GCE tests see when running x86 build on x64. + +2012-09-03 Ross Johnson + + * Makefile (VCE-static): Add VC++ static build target + (VCE-static-debug): Likewise. + +2012-08-29 Daniel Richard. G + + * mutex6.c: Removed pointless exit(0) and never-reached comment. + * mutex6r.c: Likewise. + * mutex6rs.c: Likewise. + * mutex6s.c: Likewise. + * mutex6e.c: Likewise. + * mutex6es.c: Likewise. + * mutex7.c: Likewise. + * mutex7e.c: Likewise. + * mutex7n.c: Likewise. + * mutex7r.c: Likewise. + * mutex6n.c: Likewise; ensure operator precedence. + * once2.c (sharedInt_t): replace static initialization of struct with memset. + * once3.c: Likewise. + * once4.c: Likewise. + * cleanup0.c: Likewise. + * cleanup1.c: Likewise. + * cleanup2.c: Likewise. + * cleanup3.c: Likewise. + * openmp1.c: Fix casts. + * exit1.c: Remove assert statement that is never reached and return 1. + * exception2.c: Prevent displaying modal error dialog. + +2012-08-19 Ross Johnson + + * join4.c: Test for new pthread_timedjoin_np routine + * Makefile (join4): Added. + * GNUmakefile (join4): Added. + * Bmakefile (join4): Added. + * Wmakefile (join4): Added. + * test.h (sys/timeb.h): Add #include. + * mutex8.c (sys/timeb.h): Remove #include. + * mutex8e.c (sys/timeb.h): Remove #include. + * mutex8n.c (sys/timeb.h): Remove #include. + * mutex8r.c (sys/timeb.h): Remove #include. + * benchtest1.c (sys/timeb.h): Remove #include. + * benchtest2.c (sys/timeb.h): Remove #include. + * benchtest3.c (sys/timeb.h): Remove #include. + * benchtest4.c (sys/timeb.h): Remove #include. + * benchtest5.c (sys/timeb.h): Remove #include. + +2012-08-11 Daniel Richard. G + + * Makefile: Various improvements. + * GNUmakefile: Likewise. + +2011-07-20 Ross Johnson + + * cancel2.c (PTHREAD_CANCELED): Fix cast warning when compiling with g++. + * cleanup0.c (PTHREAD_CANCELED): Likewise. + * cleanup1.c (PTHREAD_CANCELED): Likewise. + +2012-07-19 Daniel Richard. G + + * Makefile: Various fixes. + * GNUmakefile: Likewise. + 2011-07-03 Ross Johnson * create3.c: Removed; testing a condition that is not in the library's @@ -96,7 +285,7 @@ * GNUMakefile: Update for new tests. * Makefile: Ditto. * BMakefile: Ditto. - * once3.c: Improve cancelation testing. + * once3.c: Improve cancellation testing. * stress1.c: Fix comment. 2007-01-04 Ross Johnson @@ -742,13 +931,13 @@ 2000-01-04 Ross Johnson - * cancel4.c: New; Test cancelation does not occur in deferred - cancelation threads with no cancelation points. + * cancel4.c: New; Test cancellation does not occur in deferred + cancellation threads with no cancellation points. - * cancel3.c: New; Test asynchronous cancelation. + * cancel3.c: New; Test asynchronous cancellation. * context1.c: New; Test context switching method for async - cancelation. + cancellation. 1999-11-23 Ross Johnson @@ -772,7 +961,7 @@ Oct 14 1999 Ross Johnson * condvar7.c: New. Test broadcast after waiting thread is canceled. * condvar8.c: New. Test multiple broadcasts. * condvar9.c: New. Test multiple broadcasts with thread - cancelation. + cancellation. Sep 16 1999 Ross Johnson diff --git a/pthreads/tests/GNUmakefile b/pthreads/tests/GNUmakefile index 355c27e8c..7cbdf7446 100644 --- a/pthreads/tests/GNUmakefile +++ b/pthreads/tests/GNUmakefile @@ -5,9 +5,7 @@ # # Pthreads-win32 - POSIX Threads Library for Win32 # Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors -# -# Contact Email: rpj@callisto.canberra.edu.au +# Copyright(C) 1999,2012 Pthreads-win32 contributors # # The current list of contributors is contained # in the file CONTRIBUTORS included with the source @@ -31,21 +29,27 @@ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # -DLL_VER = 2 +DLL_VER = 2$(EXTRAVERSION) -CP = cp -f -MV = mv -f -RM = rm -f -CAT = cat -MKDIR = mkdir -TOUCH = echo Passed > -ECHO = @echo -MAKE = make -k +CP = cp -f +MV = mv -f +RM = rm -f +CAT = cat +MKDIR = mkdir +ECHO = echo +TOUCH = $(ECHO) Passed > +TESTFILE = test -f +TESTDIR = test -d +AND = && # For cross compiling use e.g. # # make CROSS=i386-mingw32msvc- clean GC CROSS = +# For cross testing use e.g. +# # make RUN=wine CROSS=i386-mingw32msvc- clean GC +RUN = + AR = $(CROSS)ar DLLTOOL = $(CROSS)dlltool CC = $(CROSS)gcc @@ -53,25 +57,35 @@ CXX = $(CROSS)g++ RANLIB = $(CROSS)ranlib # -# Mingw32 +# Mingw # +XLIBS = XXCFLAGS = -XXLIBS = -lws2_32 -lgomp +XXLIBS = OPT = -O3 DOPT = -g -O0 -#CFLAGS = -O3 -UNDEBUG -Wall $(XXCFLAGS) -CFLAGS = ${OPT} -UNDEBUG -Wall $(XXCFLAGS) +CFLAGS = ${OPT} $(ARCH) -UNDEBUG -Wall $(XXCFLAGS) +LFLAGS = $(ARCH) $(XXLFLAGS) +# +# Uncomment this next to link the GCC/C++ runtime libraries statically +# (Be sure to read about these options and their associated caveats +# at http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html) +# +# NOTE 1: Doing this appears to break GCE:pthread_cleanup_*(), which +# relies on C++ class destructors being called when leaving scope. +# +# NOTE 2: If you do this DO NOT distribute your pthreads DLLs with +# the official filenaming, i.e. pthreadVC2.dll, etc. Instead, change DLL_VER +# above to "2slgcc" for example, to build "pthreadGC2slgcc.dll", etc. +# +#LFLAGS += -static-libgcc -static-libstdc++ BUILD_DIR = .. INCLUDES = -I. -.INTERMEDIATE: %.exe %.pass -.SECONDARY: %.exe %.pass -.PRECIOUS: %.exe %.pass - TEST = GC # Default lib version -GCX = $(TEST)$(DLL_VER) +GCX = GC$(DLL_VER) # Files we need to run the tests # - paths are relative to pthreads build dir. @@ -81,345 +95,134 @@ DLL = pthread$(GCX).dll # The next path is relative to $BUILD_DIR QAPC = # ../QueueUserAPCEx/User/quserex.dll -COPYFILES = $(HDR) $(LIB) $(DLL) $(QAPC) - -# If a test case returns a non-zero exit code to the shell, make will -# stop. - -TESTS = \ - sizes loadfree \ - self1 mutex5 mutex1 mutex1e mutex1n mutex1r \ - semaphore1 semaphore2 semaphore3 \ - condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 exit1 \ - create1 create2 reuse1 reuse2 equal1 \ - sequence1 kill1 valid1 valid2 \ - exit2 exit3 exit4 exit5 \ - join0 join1 detach1 join2 join3 \ - mutex2 mutex2r mutex2e mutex3 mutex3r mutex3e \ - mutex4 mutex6 mutex6n mutex6e mutex6r \ - mutex6s mutex6es mutex6rs \ - mutex7 mutex7n mutex7e mutex7r mutex8 mutex8n mutex8e mutex8r \ - robust1 robust2 robust3 robust4 robust5 \ - count1 \ - once1 once2 once3 once4 self2 \ - cancel1 cancel2 \ - semaphore4 semaphore4t semaphore5 \ - barrier1 barrier2 barrier3 barrier4 barrier5 barrier6 \ - tsd1 tsd2 openmp1 delay1 delay2 eyal1 \ - condvar3 condvar3_1 condvar3_2 condvar3_3 \ - condvar4 condvar5 condvar6 condvar7 condvar8 condvar9 \ - errno1 \ - rwlock1 rwlock2 rwlock3 rwlock4 rwlock5 rwlock6 rwlock7 rwlock8 \ - rwlock2_t rwlock3_t rwlock4_t rwlock5_t rwlock6_t rwlock6_t2 \ - context1 cancel3 cancel4 cancel5 cancel6a cancel6d \ - cancel7 cancel8 \ - cleanup0 cleanup1 cleanup2 cleanup3 \ - priority1 priority2 inherit1 \ - spin1 spin2 spin3 spin4 \ - exception1 exception2 exception3 \ - cancel9 stress1 - -STRESSTESTS = \ - stress1 - -BENCHTESTS = \ - benchtest1 benchtest2 benchtest3 benchtest4 benchtest5 - -STATICTESTS = \ - sizes \ - self1 mutex5 mutex1 mutex1e mutex1n mutex1r \ - semaphore1 semaphore2 semaphore3 \ - condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 exit1 \ - create1 create2 reuse1 reuse2 equal1 \ - sequence1 kill1 valid1 valid2 \ - exit2 exit3 exit4 exit5 \ - join0 join1 detach1 join2 join3 \ - mutex2 mutex2r mutex2e mutex3 mutex3r mutex3e \ - mutex4 mutex6 mutex6n mutex6e mutex6r \ - mutex6s mutex6es mutex6rs \ - mutex7 mutex7n mutex7e mutex7r mutex8 mutex8n mutex8e mutex8r \ - robust1 robust2 robust3 robust4 robust5 \ - count1 \ - once1 once2 once3 once4 self2 \ - cancel1 cancel2 \ - semaphore4 semaphore4t semaphore5 \ - barrier1 barrier2 barrier3 barrier4 barrier5 barrier6 \ - tsd1 tsd2 delay1 delay2 eyal1 \ - condvar3 condvar3_1 condvar3_2 condvar3_3 \ - condvar4 condvar5 condvar6 condvar7 condvar8 condvar9 \ - errno1 \ - rwlock1 rwlock2 rwlock3 rwlock4 rwlock5 rwlock6 rwlock7 rwlock8 \ - rwlock2_t rwlock3_t rwlock4_t rwlock5_t rwlock6_t rwlock6_t2 \ - context1 cancel3 cancel4 cancel5 cancel6a cancel6d \ - cancel7 cancel8 \ - cleanup0 cleanup1 cleanup2 cleanup3 \ - priority1 priority2 inherit1 \ - spin1 spin2 spin3 spin4 \ - exception1 exception2 exception3 \ - cancel9 stress1 - -ALLTESTS = $(TESTS) $(BENCHTESTS) - -ASM = $(ALLTESTS:%=%.s) -PASSES = $(TESTS:%=%.pass) +include common.mk + +.INTERMEDIATE: $(ALL_KNOWN_TESTS:%=%.exe) $(BENCHTESTS:%=%.exe) +.SECONDARY: $(ALL_KNOWN_TESTS:%=%.exe) $(ALL_KNOWN_TESTS:%=%.pass) $(BENCHTESTS:%=%.exe) $(BENCHTESTS:%=%.bench) +.PRECIOUS: $(ALL_KNOWN_TESTS:%=%.exe) $(ALL_KNOWN_TESTS:%=%.pass) $(BENCHTESTS:%=%.exe) $(BENCHTESTS:%=%.bench) + +ASM = $(ALL_KNOWN_TESTS:%=%.s) +TESTS = $(ALL_KNOWN_TESTS) BENCHRESULTS = $(BENCHTESTS:%=%.bench) -STRESSRESULTS = $(STRESSTESTS:%=%.pass) -STATICRESULTS = $(STATICTESTS:%=%.pass) + +# +# To build and run "foo.exe" and "bar.exe" only use, e.g.: +# make clean GC NO_DEPS=1 TESTS="foo bar" +# +# To build and run "foo.exe" and "bar.exe" and run all prerequisite tests +# use, e.g.: +# make clean GC TESTS="foo bar" +# +# Set TESTS to one or more tests. +# +ifndef NO_DEPS +include runorder.mk +endif help: @ $(ECHO) "Run one of the following command lines:" - @ $(ECHO) "make clean GC (to test using GC dll with C (no EH) applications)" - @ $(ECHO) "make clean GCX (to test using GC dll with C++ (EH) applications)" - @ $(ECHO) "make clean GCE (to test using GCE dll with C++ (EH) applications)" - @ $(ECHO) "make clean GC-bench (to benchtest using GNU C dll with C cleanup code)" - @ $(ECHO) "make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling)" - @ $(ECHO) "make clean GC-stress (to stresstest using GNU C dll with C cleanup code)" - @ $(ECHO) "make clean GCE-stress (to stresstest using GNU C dll with C++ exception handling)" - @ $(ECHO) "make clean GC-static (to test using GC static lib with C (no EH) applications)" - @ $(ECHO) "make clean GC-debug (to test using GC dll with C (no EH) applications)" - -all: - @ $(MAKE) clean GC - @ $(MAKE) clean GCX - @ $(MAKE) clean GCE + @ $(ECHO) "$(MAKE) clean GC (to test using GC dll with C (no EH) applications)" + @ $(ECHO) "$(MAKE) clean GCX (to test using GC dll with C++ (EH) applications)" + @ $(ECHO) "$(MAKE) clean GCE (to test using GCE dll with C++ (EH) applications)" + @ $(ECHO) "$(MAKE) clean GC-bench (to benchtest using GNU C dll with C cleanup code)" + @ $(ECHO) "$(MAKE) clean GC-debug (to test using GC dll with C (no EH) applications)" + @ $(ECHO) "$(MAKE) clean GC-static (to test using GC static lib with C (no EH) applications)" + @ $(ECHO) "$(MAKE) clean GC-static-debug (to test using GC static lib with C (no EH) applications)" + @ $(ECHO) "$(MAKE) clean GCE-static (to test using GC static lib with C (no EH) applications)" + @ $(ECHO) "$(MAKE) clean GCE-static-debug (to test using GC static lib with C (no EH) applications)" + @ $(ECHO) "$(MAKE) clean GCE-debug (to test using GCE dll with C++ (EH) applications)" + @ $(ECHO) "$(MAKE) clean GCX-static (to test using GC static lib with C++ applications)" + @ $(ECHO) "$(MAKE) clean GCX-static-debug (to test using GC static lib with C++ applications)" + @ $(ECHO) "$(MAKE) clean GCX-debug (to test using GCE dll with C++ (EH) applications)" + @ $(ECHO) "$(MAKE) clean GC-foo (to build individual test \"foo.c\" with C and run using GC dll)" + @ $(ECHO) "$(MAKE) clean GCE-foo (to build individual tests \"foo.c\" with C++ and run using GCE dll)" + @ $(ECHO) "$(MAKE) clean GCX-foo (to build individual tests \"foo.c\" with C++ and run using GC dll)" GC: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" all-pass + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)" CC=$(CC) XXCFLAGS="-D__CLEANUP_C" allpassed GC-asm: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" all-asm - -GCE: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_CXX" all-pass - -GCX: - $(MAKE) TEST=GC CC=$(CXX) XXCFLAGS="-fopenmp -mthreads -D__CLEANUP_C" all-pass + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)" CC=$(CC) XXCFLAGS="-D__CLEANUP_C" all-asm GC-bench: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)" CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" all-bench -GCE-bench: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="benchlib." all-bench +GC-bench-debug: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)d" CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" OPT="${DOPT}" all-bench GC-debug: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-fopenmp -D__CLEANUP_C" OPT="${DOPT}" DLL_VER="$(DLL_VER)d" all-pass + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)d" CC=$(CC) XXCFLAGS="-D__CLEANUP_C" OPT="${DOPT}" allpassed + +GC-static GC-small-static: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)" CC=$(CC) XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" DLL="" allpassed + +GC-static-debug GC-small-static-debug: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)d" CC=$(CC) XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" OPT="$(DOPT)" DLL="" allpassed + +GCE: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GCE$(DLL_VER)" CC=$(CXX) XXCFLAGS="-mthreads -D__CLEANUP_CXX" allpassed GCE-debug: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-fopenmp -D__CLEANUP_CXX" OPT="${DOPT}" DLL_VER="$(DLL_VER)d" all-pass + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GCE$(DLL_VER)d" CC=$(CXX) XXCFLAGS="-D__CLEANUP_CXX" OPT="${DOPT}" allpassed -GC-bench-debug: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="benchlib.o" OPT="${OPT}" DLL_VER="$(DLL_VER)d" all-bench +GCE-static GCE-small-static: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GCE$(DLL_VER)" CC=$(CXX) XXCFLAGS="-D__CLEANUP_CXX -DPTW32_STATIC_LIB" DLL="" allpassed -GC-static: - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" XXLIBS="-lws2_32" DLL="" all-static +GCE-static-debug GCE-small-static-debug: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GCE$(DLL_VER)d" CC=$(CXX) XXCFLAGS="-D__CLEANUP_CXX -DPTW32_STATIC_LIB" OPT="$(DOPT)" DLL="" allpassed + +GCX: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)" CC=$(CXX) XXCFLAGS="-mthreads -D__CLEANUP_C" allpassed -GC-stress: - $(ECHO) Stress tests can take a long time since they are trying to - $(ECHO) expose weaknesses that may be intermittant or statistically rare. - $(ECHO) A pass does not prove correctness, but may give greater confidence. - $(MAKE) TEST=GC CC=$(CC) XXCFLAGS="-D__CLEANUP_C" XXLIBS="" all-stress +GCX-debug: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)d" CC=$(CXX) XXCFLAGS="-D__CLEANUP_C" OPT="${DOPT}" allpassed -GCE-stress: - $(MAKE) TEST=GCE CC=$(CXX) XXCFLAGS="-mthreads -D__CLEANUP_CXX" XXLIBS="" all-stress +GCX-static GCX-small-static: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)" CC=$(CXX) XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" DLL="" allpassed + +GCX-static-debug GCX-small-static-debug: + @ $(MAKE) --no-builtin-rules TEST=$@ GCX="GC$(DLL_VER)d" CC=$(CXX) XXCFLAGS="-D__CLEANUP_C -DPTW32_STATIC_LIB" OPT="$(DOPT)" DLL="" allpassed all-asm: $(ASM) - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -all-pass: $(PASSES) - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -all-bench: $(BENCHRESULTS) - @ $(ECHO) BENCH TESTS COMPLETED. - -all-stress: $(STRESSRESULTS) - @ $(ECHO) STRESS TESTS COMPLETED. - -all-static: $(STATICRESULTS) - @ $(ECHO) ALL STATIC TESTS PASSED! Congratulations! - -benchtest1.bench: -benchtest2.bench: -benchtest3.bench: -benchtest4.bench: -benchtest5.bench: - -barrier1.pass: semaphore4.pass -barrier2.pass: barrier1.pass -barrier3.pass: barrier2.pass -barrier4.pass: barrier3.pass -barrier5.pass: barrier4.pass -barrier6.pass: barrier5.pass -cancel1.pass: create1.pass -cancel2.pass: cancel1.pass -cancel3.pass: context1.pass -cancel4.pass: cancel3.pass -cancel5.pass: cancel3.pass -cancel6a.pass: cancel3.pass -cancel6d.pass: cancel3.pass -cancel7.pass: kill1.pass -cancel8.pass: cancel7.pass -cancel9.pass: cancel8.pass -cleanup0.pass: cancel5.pass -cleanup1.pass: cleanup0.pass -cleanup2.pass: cleanup1.pass -cleanup3.pass: cleanup2.pass -condvar1.pass: -condvar1_1.pass: condvar1.pass -condvar1_2.pass: join2.pass -condvar2.pass: condvar1.pass -condvar2_1.pass: condvar2.pass join2.pass -condvar3.pass: create1.pass condvar2.pass -condvar3_1.pass: condvar3.pass join2.pass -condvar3_2.pass: condvar3_1.pass -condvar3_3.pass: condvar3_2.pass -condvar4.pass: create1.pass -condvar5.pass: condvar4.pass -condvar6.pass: condvar5.pass -condvar7.pass: condvar6.pass cleanup1.pass -condvar8.pass: condvar7.pass -condvar9.pass: condvar8.pass -context1.pass: cancel1.pass -count1.pass: join1.pass -create1.pass: mutex2.pass -create2.pass: create1.pass -delay1.pass: -delay2.pass: delay1.pass -detach1.pass: join0.pass -equal1.pass: create1.pass -errno1.pass: mutex3.pass -exception1.pass: cancel4.pass -exception2.pass: exception1.pass -exception3.pass: exception2.pass -exit1.pass: -exit2.pass: create1.pass -exit3.pass: create1.pass -exit4.pass: -exit5.pass: exit4.pass kill1.pass -eyal1.pass: tsd1.pass -inherit1.pass: join1.pass priority1.pass -join0.pass: create1.pass -join1.pass: create1.pass -join2.pass: create1.pass -join3.pass: join2.pass -kill1.pass: -loadfree.pass: pthread.dll -mutex1.pass: self1.pass -mutex1n.pass: mutex1.pass -mutex1e.pass: mutex1.pass -mutex1r.pass: mutex1.pass -mutex2.pass: mutex1.pass -mutex2r.pass: mutex2.pass -mutex2e.pass: mutex2.pass -mutex3.pass: create1.pass -mutex3r.pass: mutex3.pass -mutex3e.pass: mutex3.pass -mutex4.pass: mutex3.pass -mutex5.pass: -mutex6.pass: mutex4.pass -mutex6n.pass: mutex4.pass -mutex6e.pass: mutex4.pass -mutex6r.pass: mutex4.pass -mutex6s.pass: mutex6.pass -mutex6rs.pass: mutex6r.pass -mutex6es.pass: mutex6e.pass -mutex7.pass: mutex6.pass -mutex7n.pass: mutex6n.pass -mutex7e.pass: mutex6e.pass -mutex7r.pass: mutex6r.pass -mutex8.pass: mutex7.pass -mutex8n.pass: mutex7n.pass -mutex8e.pass: mutex7e.pass -mutex8r.pass: mutex7r.pass -once1.pass: create1.pass -once2.pass: once1.pass -once3.pass: once2.pass -once4.pass: once3.pass -openmp1.pass: tsd2.pass -priority1.pass: join1.pass -priority2.pass: priority1.pass barrier3.pass -reuse1.pass: create2.pass -reuse2.pass: reuse1.pass -robust1.pass: mutex8r.pass -robust2.pass: mutex8r.pass -robust3.pass: robust2.pass -robust4.pass: robust3.pass -robust5.pass: robust4.pass -rwlock1.pass: condvar6.pass -rwlock2.pass: rwlock1.pass -rwlock3.pass: rwlock2.pass join2.pass -rwlock4.pass: rwlock3.pass -rwlock5.pass: rwlock4.pass -rwlock6.pass: rwlock5.pass -rwlock7.pass: rwlock6.pass -rwlock8.pass: rwlock7.pass -rwlock2_t.pass: rwlock2.pass -rwlock3_t.pass: rwlock2_t.pass -rwlock4_t.pass: rwlock3_t.pass -rwlock5_t.pass: rwlock4_t.pass -rwlock6_t.pass: rwlock5_t.pass -rwlock6_t2.pass: rwlock6_t.pass -self1.pass: -self2.pass: create1.pass -semaphore1.pass: -semaphore2.pass: -semaphore3.pass: semaphore2.pass -semaphore4.pass: semaphore3.pass cancel1.pass -semaphore4t.pass: semaphore4.pass -semaphore5.pass: semaphore4.pass -sequence1.pass: reuse2.pass -sizes.pass: -spin1.pass: -spin2.pass: spin1.pass -spin3.pass: spin2.pass -spin4.pass: spin3.pass -stress1.pass: -tsd1.pass: barrier5.pass join1.pass -tsd2.pass: tsd1.pass -valid1.pass: join1.pass -valid2.pass: valid1.pass - -sizes.pass: sizes.exe - @ $(ECHO) Running $* - ./$< > SIZES.$(TEST) - @ $(CAT) SIZES.$(TEST) - @ $(ECHO) Passed - @ $(TOUCH) $@ + @ $(ECHO) "ALL TESTS PASSED! Congratulations!" + +allpassed: $(HDR) $(LIB) $(DLL) $(QAPC) $(TESTS:%=%.pass) + @ $(ECHO) "ALL TESTS PASSED! Congratulations!" + +all-bench: $(HDR) $(LIB) $(DLL) $(QAPC) $(XXLIBS) $(BENCHRESULTS) + @ $(ECHO) "ALL BENCH TESTS COMPLETED." + +cancel9.exe: XLIBS = -lws2_32 %.pass: %.exe - @ $(ECHO) Running $* - ./$* + @ $(ECHO) Running $(TEST) test \"$*\" + @ $(RUN) ./$* @ $(ECHO) Passed @ $(TOUCH) $@ -%.bench: $(LIB) $(DLL) $(HDR) $(QAPC) $(XXLIBS) %.exe - @ $(ECHO) Running $* - ./$* +%.bench: %.exe + @ $(ECHO) Running $(TEST) test \"$*\" + @ $(RUN) ./$* @ $(ECHO) Done @ $(TOUCH) $@ -%.exe: %.c $(LIB) $(DLL) $(HDR) $(QAPC) - @ $(ECHO) Compiling $@ - @ $(ECHO) $(CC) $(CFLAGS) -o $@ $< $(INCLUDES) -L. -lpthread$(GCX) -lsupc++ $(XXLIBS) - @ $(CC) $(CFLAGS) -o $@ $< $(INCLUDES) -L. -lpthread$(GCX) -lsupc++ $(XXLIBS) +%.exe: %.c + $(CC) $(CFLAGS) $(LFLAGS) -o $@ $< $(INCLUDES) -L. -lpthread$(GCX) $(XLIBS) $(XXLIBS) %.pre: %.c $(HDR) - @ $(CC) -E $(CFLAGS) -o $@ $< $(INCLUDES) + $(CC) -E $(CFLAGS) -o $@ $< $(INCLUDES) %.s: %.c $(HDR) @ $(ECHO) Compiling $@ - @ $(CC) -S $(CFLAGS) -o $@ $< $(INCLUDES) + $(CC) -S $(CFLAGS) -o $@ $< $(INCLUDES) -$(COPYFILES): +$(HDR) $(LIB) $(DLL) $(QAPC): @ $(ECHO) Copying $(BUILD_DIR)/$@ - @ $(CP) $(BUILD_DIR)/$@ . + @ $(TESTFILE) $(BUILD_DIR)/$@ $(AND) $(CP) $(BUILD_DIR)/$@ . benchlib.o: benchlib.c @ $(ECHO) Compiling $@ - @ $(ECHO) $(CC) -c $(CFLAGS) $< $(INCLUDES) - @ $(CC) -c $(CFLAGS) $< $(INCLUDES) - -pthread.dll: $(DLL) - @ $(CP) $(DLL) $@ + $(CC) -c $(CFLAGS) $< $(INCLUDES) clean: - $(RM) *.dll @@ -436,7 +239,8 @@ clean: - $(RM) *.obj - $(RM) *.pdb - $(RM) *.exe + - $(RM) *.manifest - $(RM) *.pass - $(RM) *.bench - - $(RM) *.static - $(RM) *.log + \ No newline at end of file diff --git a/pthreads/tests/Makefile b/pthreads/tests/Makefile index 9b0ca3094..15f98686f 100644 --- a/pthreads/tests/Makefile +++ b/pthreads/tests/Makefile @@ -5,9 +5,7 @@ # # Pthreads-win32 - POSIX Threads Library for Win32 # Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors -# -# Contact Email: rpj@callisto.canberra.edu.au +# Copyright(C) 1999,2012 Pthreads-win32 contributors # # The current list of contributors is contained # in the file CONTRIBUTORS included with the source @@ -31,14 +29,15 @@ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # -DLL_VER = 2 +DLL_VER = 2$(EXTRAVERSION) CP = copy RM = erase +RMDIR = rmdir /s /q CAT = type MKDIR = mkdir -TOUCH = echo Passed > ECHO = echo +TOUCH = $(ECHO) touched > # The next path is relative to $BUILD_DIR QAPC = # ..\QueueUserAPCEx\User\quserex.dll @@ -50,19 +49,25 @@ OPTIM = /O2 /Ob0 XXLIBS = ws2_32.lib # C++ Exceptions -VCEFLAGS = /EHsc /TP /DPtW32NoCatchWarn /D__CLEANUP_CXX +VCEFLAGS = /EHs /TP /DPtW32NoCatchWarn /D__CLEANUP_CXX VCELIB = pthreadVCE$(DLL_VER).lib VCEDLL = pthreadVCE$(DLL_VER).dll +VCELIBD = pthreadVCE$(DLL_VER)d.lib +VCEDLLD = pthreadVCE$(DLL_VER)d.dll # Structured Exceptions VSEFLAGS = /D__CLEANUP_SEH VSELIB = pthreadVSE$(DLL_VER).lib VSEDLL = pthreadVSE$(DLL_VER).dll +VSELIBD = pthreadVSE$(DLL_VER)d.lib +VSEDLLD = pthreadVSE$(DLL_VER)d.dll # C cleanup code VCFLAGS = /D__CLEANUP_C VCLIB = pthreadVC$(DLL_VER).lib VCDLL = pthreadVC$(DLL_VER).dll +VCLIBD = pthreadVC$(DLL_VER)d.lib +VCDLLD = pthreadVC$(DLL_VER)d.dll # C++ Exceptions in application - using VC version of pthreads dll -VCXFLAGS = /EHsc /TP /D__CLEANUP_C +VCXFLAGS = /EHs /TP /D__CLEANUP_C # Defaults CPLIB = $(VCLIB) @@ -73,377 +78,168 @@ LFLAGS= /INCREMENTAL:NO INCLUDES=-I. BUILD_DIR=.. -COPYFILES = $(CPHDR) $(CPLIB) $(CPDLL) $(QAPC) - -TEST = -EHFLAGS = +EHFLAGS = # If a test case returns a non-zero exit code to the shell, make will # stop. -PASSES = sizes.pass $(REGULAR_PASSES) - -REGULAR_PASSES = loadfree.pass \ - self1.pass mutex5.pass \ - mutex1.pass mutex1n.pass mutex1e.pass mutex1r.pass \ - semaphore1.pass semaphore2.pass semaphore3.pass \ - mutex2.pass mutex3.pass \ - mutex2r.pass mutex2e.pass mutex3r.pass mutex3e.pass \ - condvar1.pass condvar1_1.pass condvar1_2.pass condvar2.pass condvar2_1.pass \ - exit1.pass create1.pass create2.pass reuse1.pass reuse2.pass equal1.pass \ - sequence1.pass kill1.pass valid1.pass valid2.pass \ - exit2.pass exit3.pass exit4.pass exit5.pass \ - join0.pass join1.pass detach1.pass join2.pass join3.pass \ - mutex4.pass mutex6.pass mutex6n.pass mutex6e.pass mutex6r.pass \ - mutex6s.pass mutex6es.pass mutex6rs.pass \ - mutex7.pass mutex7n.pass mutex7e.pass mutex7r.pass \ - mutex8.pass mutex8n.pass mutex8e.pass mutex8r.pass \ - robust1.pass robust2.pass robust3.pass robust4.pass robust5.pass \ - count1.pass \ - once1.pass once2.pass once3.pass once4.pass \ - self2.pass \ - cancel1.pass cancel2.pass \ - semaphore4.pass semaphore4t.pass semaphore5.pass \ - barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.pass barrier6.pass \ - tsd1.pass tsd2.pass delay1.pass delay2.pass eyal1.pass \ - condvar3.pass condvar3_1.pass condvar3_2.pass condvar3_3.pass \ - condvar4.pass condvar5.pass condvar6.pass \ - condvar7.pass condvar8.pass condvar9.pass \ - errno1.pass \ - rwlock1.pass rwlock2.pass rwlock3.pass rwlock4.pass \ - rwlock5.pass rwlock6.pass rwlock7.pass rwlock8.pass \ - rwlock2_t.pass rwlock3_t.pass rwlock4_t.pass rwlock5_t.pass rwlock6_t.pass rwlock6_t2.pass \ - context1.pass \ - cancel3.pass cancel4.pass cancel5.pass cancel6a.pass cancel6d.pass \ - cancel7.pass cancel8.pass \ - cleanup0.pass cleanup1.pass cleanup2.pass cleanup3.pass \ - priority1.pass priority2.pass inherit1.pass \ - spin1.pass spin2.pass spin3.pass spin4.pass \ - exception1.pass exception2.pass exception3.pass \ - cancel9.pass stress1.pass - -BENCHRESULTS = \ - benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench - -STRESSRESULTS = \ - stress1.stress - -STATICRESULTS = \ - sizes.pass \ - self1.pass mutex5.pass \ - mutex1.pass mutex1n.pass mutex1e.pass mutex1r.pass \ - semaphore1.pass semaphore2.pass semaphore3.pass \ - mutex2.pass mutex3.pass \ - mutex2r.pass mutex2e.pass mutex3r.pass mutex3e.pass \ - condvar1.pass condvar1_1.pass condvar1_2.pass condvar2.pass condvar2_1.pass \ - exit1.pass create1.pass create2.pass reuse1.pass reuse2.pass equal1.pass \ - sequence1.pass kill1.pass valid1.pass valid2.pass \ - exit2.pass exit3.pass exit4.pass exit5.pass \ - join0.pass join1.pass detach1.pass join2.pass join3.pass \ - mutex4.pass mutex6.pass mutex6n.pass mutex6e.pass mutex6r.pass \ - mutex6s.pass mutex6es.pass mutex6rs.pass \ - mutex7.pass mutex7n.pass mutex7e.pass mutex7r.pass \ - mutex8.pass mutex8n.pass mutex8e.pass mutex8r.pass \ - robust1.pass robust2.pass robust3.pass robust4.pass robust5.pass \ - count1.pass \ - once1.pass once2.pass once3.pass once4.pass \ - self2.pass \ - cancel1.pass cancel2.pass \ - semaphore4.pass semaphore4t.pass semaphore5.pass \ - barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.pass barrier6.pass \ - tsd1.pass tsd2.pass delay1.pass delay2.pass eyal1.pass \ - condvar3.pass condvar3_1.pass condvar3_2.pass condvar3_3.pass \ - condvar4.pass condvar5.pass condvar6.pass \ - condvar7.pass condvar8.pass condvar9.pass \ - errno1.pass \ - rwlock1.pass rwlock2.pass rwlock3.pass rwlock4.pass \ - rwlock5.pass rwlock6.pass rwlock7.pass rwlock8.pass \ - rwlock2_t.pass rwlock3_t.pass rwlock4_t.pass rwlock5_t.pass rwlock6_t.pass rwlock6_t2.pass \ - context1.pass \ - cancel3.pass cancel4.pass cancel5.pass cancel6a.pass cancel6d.pass \ - cancel7.pass cancel8.pass \ - cleanup0.pass cleanup1.pass cleanup2.pass cleanup3.pass \ - priority1.pass priority2.pass inherit1.pass \ - spin1.pass spin2.pass spin3.pass spin4.pass \ - exception1.pass exception2.pass exception3.pass \ - cancel9.pass stress1.pass +include common.mk + +# +# To build and run "foo.exe" and "bar.exe" only use, e.g.: +# nmake clean VC NO_DEPS=1 TESTS="foo bar" +# +# To build and run "foo.exe" and "bar.exe" and run all prerequisite tests +# use, e.g.: +# nmake clean VC TESTS="foo bar" +# +# Set TESTS to one or more tests. +# +!IFNDEF NO_DEPS +include runorder.mk +!ENDIF help: @ $(ECHO) Run one of the following command lines: - @ $(ECHO) nmake clean VC (to test using VC dll with VC (no EH) apps) - @ $(ECHO) nmake clean VC-bench (to benchtest using VC dll with C bench apps) - @ $(ECHO) nmake clean VC-stress (to stresstest using VC dll with C stress apps) - @ $(ECHO) nmake clean VC-static (to test using VC static lib with VC (no EH) apps) - @ $(ECHO) nmake clean VCX (to test using VC dll with VC++ (EH) applications) - @ $(ECHO) nmake clean VCX-bench (to benchtest using VC dll with C++ bench apps) - @ $(ECHO) nmake clean VCX-stress (to stresstest using VC dll with C++ stress apps) - @ $(ECHO) nmake clean VCE (to test using the VCE dll with VC++ EH applications) - @ $(ECHO) nmake clean VCE-bench (to benchtest using VCE dll with C++ bench apps) - @ $(ECHO) nmake clean VCE-stress (to stresstest using VCE dll with C++ stress apps) - @ $(ECHO) nmake clean VSE (to test using VSE dll with VC (SEH) apps) - @ $(ECHO) nmake clean VSE-bench (to benchtest using VSE dll with SEH bench apps) - @ $(ECHO) nmake clean VSE-stress (to stresstest using VSE dll with SEH stress apps) - -all: - @ $(MAKE) /E clean VC - @ $(MAKE) /E clean VCX - @ $(MAKE) /E clean VCE - @ $(MAKE) /E clean VSE - @ $(MAKE) /E clean VC-bench - @ $(MAKE) /E clean VC-stress - -# This allows an individual test application to be made using the default lib. -# e.g. nmake clean test cancel3.exe -test: $(CPLIB) $(CPDLL) $(CPHDR) $(QAPC) - -tests: $(CPLIB) $(CPDLL) $(CPHDR) $(QAPC) $(PASSES) - @ $(ECHO) ALL TESTS PASSED! Congratulations! - -benchtests: $(CPLIB) $(CPDLL) $(CPHDR) $(XXLIBS) $(BENCHRESULTS) - @ $(ECHO) ALL BENCH TESTS DONE. - -stresstests: $(CPLIB) $(CPDLL) $(CPHDR) $(STRESSRESULTS) - @ $(ECHO) ALL STRESS TESTS DONE. - -statictests: $(CPLIB) $(CPDLL) $(CPHDR) $(STATICRESULTS) - @ $(ECHO) ALL STATIC TESTS DONE. - -sizes.pass: sizes.exe - @ $(ECHO) ... Running $(TEST)$(DLL_VER) test: $*.exe - @ .\$*.exe > SIZES.$(TEST) - @ $(CAT) SIZES.$(TEST) - @ $(ECHO) ...... Passed - @ $(TOUCH) $*.pass - -$(REGULAR_PASSES): $*.exe - @ $(ECHO) ... Running $(TEST) test: $*.exe - @ .\$*.exe - @ $(ECHO) ...... Passed - @ $(TOUCH) $*.pass - -$(BENCHRESULTS): $*.exe - @ $(ECHO) ... Running $(TEST) benchtest: $*.exe - @ .\$*.exe - @ $(ECHO) ...... Done - @ $(TOUCH) $*.bench - -$(STRESSRESULTS): $*.exe - @ $(ECHO) ... Running $(TEST) stresstest: $*.exe - @ .\$*.exe - @ $(ECHO) ...... Done - @ $(TOUCH) $*.pass + @ $(ECHO) nmake clean VC + @ $(ECHO) nmake clean VC-bench + @ $(ECHO) nmake clean VC-static + @ $(ECHO) nmake clean VC-static-bench + @ $(ECHO) nmake clean VC-debug + @ $(ECHO) nmake clean VC-static-debug + @ $(ECHO) nmake clean VC-small-static-debug + @ $(ECHO) nmake clean VCX + @ $(ECHO) nmake clean VCX-bench + @ $(ECHO) nmake clean VCX-static + @ $(ECHO) nmake clean VCX-static-bench + @ $(ECHO) nmake clean VCX-debug + @ $(ECHO) nmake clean VCX-static-debug + @ $(ECHO) nmake clean VCX-small-static-debug + @ $(ECHO) nmake clean VCE + @ $(ECHO) nmake clean VCE-bench + @ $(ECHO) nmake clean VCE-static + @ $(ECHO) nmake clean VCE-static-bench + @ $(ECHO) nmake clean VCE-debug + @ $(ECHO) nmake clean VCE-static-debug + @ $(ECHO) nmake clean VCE-small-static-debug + @ $(ECHO) nmake clean VSE + @ $(ECHO) nmake clean VSE-bench + @ $(ECHO) nmake clean VSE-static + @ $(ECHO) nmake clean VSE-static-bench + @ $(ECHO) nmake clean VSE-debug + @ $(ECHO) nmake clean VSE-static-debug + @ $(ECHO) nmake clean VSE-small-static-debug VC: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" tests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" allpassed VCE: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" tests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" allpassed VSE: - @ $(MAKE) /E TEST="$@" CPLIB="$(VSELIB)" CPDLL="$(VSEDLL)" EHFLAGS="$(VSEFLAGS)" tests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VSELIB)" CPDLL="$(VSEDLL)" EHFLAGS="$(VSEFLAGS)" allpassed VCX: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" tests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" allpassed VC-bench: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" XXLIBS="benchlib.o" benchtests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" $(BENCHTESTS) VCE-bench: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" XXLIBS="benchlib.o" benchtests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" $(BENCHTESTS) VSE-bench: - @ $(MAKE) /E TEST="$@" CPLIB="$(VSELIB)" CPDLL="$(VSEDLL)" EHFLAGS="$(VSEFLAGS)" XXLIBS="benchlib.o" benchtests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VSELIB)" CPDLL="$(VSEDLL)" EHFLAGS="$(VSEFLAGS)" $(BENCHTESTS) VCX-bench: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" XXLIBS="benchlib.o" benchtests + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" $(BENCHTESTS) -VC-stress: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCFLAGS)" stresstests +VC-static VC-small-static: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="" EHFLAGS="$(VCFLAGS) /DPTW32_STATIC_LIB" allpassed -VCE-stress: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCELIB)" CPDLL="$(VCEDLL)" EHFLAGS="$(VCEFLAGS)" stresstests +VCE-static VCE-small-static: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCELIB)" CPDLL="" EHFLAGS="$(VCEFLAGS) /DPTW32_STATIC_LIB" allpassed -VSE-stress: - @ $(MAKE) /E TEST="$@" CPLIB="$(VSELIB)" CPDLL="$(VSEDLL)" EHFLAGS="$(VSEFLAGS)" stresstests +VSE-static VSE-small-static: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VSELIB)" CPDLL="" EHFLAGS="$(VSEFLAGS) /DPTW32_STATIC_LIB" allpassed -VCX-stress: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="$(VCDLL)" EHFLAGS="$(VCXFLAGS)" stresstests +VCX-static VCX-small-static: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="" EHFLAGS="$(VCXFLAGS) /DPTW32_STATIC_LIB" allpassed -VC-static: - @ $(MAKE) /E TEST="$@" CPLIB="$(VCLIB)" CPDLL="" EHFLAGS="$(VCFLAGS) /DPTW32_STATIC_LIB" statictests +VC-static-bench: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="" EHFLAGS="$(VCFLAGS) /DPTW32_STATIC_LIB" $(BENCHTESTS) -.c.exe: - @ $(ECHO) $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB) $(XXLIBS) - @ $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< /Fe$@ /link $(LFLAGS) $(CPLIB) $(XXLIBS) +VCE-static-bench: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCELIB)" CPDLL="" EHFLAGS="$(VCEFLAGS) /DPTW32_STATIC_LIB" $(BENCHTESTS) -.c.o: - @ $(ECHO) $(CC) $(EHFLAGS) /c $(CFLAGS) $(INCLUDES) $< /Fo$@ - @ $(CC) $(EHFLAGS) $(CFLAGS) /c $(INCLUDES) $< /Fo$@ +VSE-static-bench: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VSELIB)" CPDLL="" EHFLAGS="$(VSEFLAGS) /DPTW32_STATIC_LIB" $(BENCHTESTS) -.c.i: - @ $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< +VCX-static-bench: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIB)" CPDLL="" EHFLAGS="$(VCXFLAGS) /DPTW32_STATIC_LIB" $(BENCHTESTS) + +VC-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIBD)" CPDLL="$(VCDLLD)" EHFLAGS="$(VCFLAGS)" allpassed + +VC-static-debug VC-small-static-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIBD)" CPDLL="" EHFLAGS="$(VCFLAGS) /DPTW32_STATIC_LIB" allpassed -$(COPYFILES): - @ $(ECHO) Copying $(BUILD_DIR)\$@ - @ $(CP) $(BUILD_DIR)\$@ . +VCE-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCELIBD)" CPDLL="$(VCEDLLD)" EHFLAGS="$(VCEFLAGS)" allpassed -pthread.dll: $(CPDLL) - @ $(CP) $(CPDLL) pthread.dll - @ $(CP) $(CPLIB) pthread.lib +VCE-static-debug VCE-small-static-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCELIBD)" CPDLL="" EHFLAGS="$(VCEFLAGS) /DPTW32_STATIC_LIB" allpassed + +VSE-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VSELIBD)" CPDLL="$(VSEDLLD)" EHFLAGS="$(VSEFLAGS)" allpassed + +VSE-static-debug VSE-small-static-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VSELIBD)" CPDLL="" EHFLAGS="$(VSEFLAGS) /DPTW32_STATIC_LIB" allpassed + +VCX-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIBD)" CPDLL="$(VCDLLD)" EHFLAGS="$(VCXFLAGS)" allpassed + +VCX-static-debug VCX-small-static-debug: + @ $(MAKE) /E /nologo TEST="$@" CPLIB="$(VCLIBD)" CPDLL="" EHFLAGS="$(VCXFLAGS) /DPTW32_STATIC_LIB" allpassed clean: - - $(RM) *.dll - - $(RM) *.lib - - $(RM) pthread.h - - $(RM) semaphore.h - - $(RM) sched.h - - $(RM) *.e - - $(RM) *.i - - $(RM) *.obj - - $(RM) *.pdb - - $(RM) *.o - - $(RM) *.asm - - $(RM) *.exe - - $(RM) *.pass - - $(RM) *.bench - - $(RM) *.log - -benchtest1.bench: -benchtest2.bench: -benchtest3.bench: -benchtest4.bench: -benchtest5.bench: - -barrier1.pass: semaphore4.pass -barrier2.pass: barrier1.pass -barrier3.pass: barrier2.pass -barrier4.pass: barrier3.pass -barrier5.pass: barrier4.pass -barrier6.pass: barrier5.pass -cancel1.pass: create1.pass -cancel2.pass: cancel1.pass -cancel3.pass: context1.pass -cancel4.pass: cancel3.pass -cancel5.pass: cancel3.pass -cancel6a.pass: cancel3.pass -cancel6d.pass: cancel3.pass -cancel7.pass: kill1.pass -cancel8.pass: cancel7.pass -cancel9.pass: cancel8.pass -cleanup0.pass: cancel5.pass -cleanup1.pass: cleanup0.pass -cleanup2.pass: cleanup1.pass -cleanup3.pass: cleanup2.pass -condvar1.pass: -condvar1_1.pass: condvar1.pass -condvar1_2.pass: join2.pass -condvar2.pass: condvar1.pass -condvar2_1.pass: condvar2.pass join2.pass -condvar3.pass: create1.pass condvar2.pass -condvar3_1.pass: condvar3.pass join2.pass -condvar3_2.pass: condvar3_1.pass -condvar3_3.pass: condvar3_2.pass -condvar4.pass: create1.pass -condvar5.pass: condvar4.pass -condvar6.pass: condvar5.pass -condvar7.pass: condvar6.pass cleanup1.pass -condvar8.pass: condvar7.pass -condvar9.pass: condvar8.pass -context1.pass: cancel1.pass -count1.pass: join1.pass -create1.pass: mutex2.pass -create2.pass: create1.pass -delay1.pass: -delay2.pass: delay1.pass -detach1.pass: join0.pass -equal1.pass: create1.pass -errno1.pass: mutex3.pass -exception1.pass: cancel4.pass -exception2.pass: exception1.pass -exception3.pass: exception2.pass -exit1.pass: -exit2.pass: create1.pass -exit3.pass: create1.pass -exit4.pass: -exit5.pass: kill1.pass -eyal1.pass: tsd1.pass -inherit1.pass: join1.pass priority1.pass -join0.pass: create1.pass -join1.pass: create1.pass -join2.pass: create1.pass -join3.pass: join2.pass -kill1.pass: -loadfree.pass: pthread.dll -mutex1.pass: self1.pass -mutex1n.pass: mutex1.pass -mutex1e.pass: mutex1.pass -mutex1r.pass: mutex1.pass -mutex2.pass: mutex1.pass -mutex2r.pass: mutex2.pass -mutex2e.pass: mutex2.pass -mutex3.pass: create1.pass -mutex3r.pass: mutex3.pass -mutex3e.pass: mutex3.pass -mutex4.pass: mutex3.pass -mutex5.pass: -mutex6.pass: mutex4.pass -mutex6n.pass: mutex4.pass -mutex6e.pass: mutex4.pass -mutex6r.pass: mutex4.pass -mutex6s.pass: mutex6.pass -mutex6rs.pass: mutex6r.pass -mutex6es.pass: mutex6e.pass -mutex7.pass: mutex6.pass -mutex7n.pass: mutex6n.pass -mutex7e.pass: mutex6e.pass -mutex7r.pass: mutex6r.pass -mutex8.pass: mutex7.pass -mutex8n.pass: mutex7n.pass -mutex8e.pass: mutex7e.pass -mutex8r.pass: mutex7r.pass -once1.pass: create1.pass -once2.pass: once1.pass -once3.pass: once2.pass -once4.pass: once3.pass -priority1.pass: join1.pass -priority2.pass: priority1.pass barrier3.pass -reuse1.pass: create2.pass -reuse2.pass: reuse1.pass -robust1.pass: mutex8r.pass -robust2.pass: mutex8r.pass -robust3.pass: robust2.pass -robust4.pass: robust3.pass -robust5.pass: robust4.pass -rwlock1.pass: condvar6.pass -rwlock2.pass: rwlock1.pass -rwlock3.pass: rwlock2.pass join2.pass -rwlock4.pass: rwlock3.pass -rwlock5.pass: rwlock4.pass -rwlock6.pass: rwlock5.pass -rwlock7.pass: rwlock6.pass -rwlock8.pass: rwlock7.pass -rwlock2_t.pass: rwlock2.pass -rwlock3_t.pass: rwlock2_t.pass -rwlock4_t.pass: rwlock3_t.pass -rwlock5_t.pass: rwlock4_t.pass -rwlock6_t.pass: rwlock5_t.pass -rwlock6_t2.pass: rwlock6_t.pass -self1.pass: -self2.pass: create1.pass -semaphore1.pass: -semaphore2.pass: -semaphore3.pass: semaphore2.pass -semaphore4.pass: semaphore3.pass cancel1.pass -semaphore4t.pass: semaphore4.pass -semaphore5.pass: semaphore4.pass -sequence1.pass: reuse2.pass -sizes.pass: -spin1.pass: -spin2.pass: spin1.pass -spin3.pass: spin2.pass -spin4.pass: spin3.pass -stress1.pass: condvar9.pass barrier5.pass -tsd1.pass: barrier5.pass join1.pass -tsd2.pass: tsd1.pass -valid1.pass: join1.pass -valid2.pass: valid1.pass + if exist *.dll $(RM) *.dll + if exist *.lib $(RM) *.lib + if exist pthread.h $(RM) pthread.h + if exist semaphore.h $(RM) semaphore.h + if exist sched.h $(RM) sched.h + if exist *.e $(RM) *.e + if exist *.i $(RM) *.i + if exist *.obj $(RM) *.obj + if exist *.pdb $(RM) *.pdb + if exist *.o $(RM) *.o + if exist *.asm $(RM) *.asm + if exist *.exe $(RM) *.exe + if exist *.manifest $(RM) *.manifest + if exist *.pass $(RM) *.pass + if exist *.bench $(RM) *.bench + if exist *.log $(RM) *.log + +.c.pass: + $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) $*.c /Fe$*.exe /link $(LFLAGS) $(CPLIB) $(XXLIBS) + @ $(ECHO) ... Running $(TEST) test: $*.exe + @ .\$*.exe + @ $(ECHO) ...... Passed + @ $(TOUCH) $*.pass + +$(ALL_KNOWN_TESTS): $(CPHDR) $(CPLIB) $(CPDLL) $(QAPC) $@.pass + +allpassed: $(TESTS) + @ $(ECHO) ALL TESTS PASSED! Congratulations! + +$(BENCHTESTS): $(CPHDR) $(CPLIB) $(CPDLL) $(QAPC) + $(CC) $(EHFLAGS) $(CFLAGS) $(INCLUDES) benchlib.c $*.c /Fe$*.exe /link $(LFLAGS) $(CPLIB) $(XXLIBS) + @ $(ECHO) ... Running $(TEST) benchmark: $*.exe + @ .\$*.exe + @ $(ECHO) ...... Done + +.c.i: + $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $< + +$(CPHDR) $(CPLIB) $(CPDLL) $(QAPC): + @ if exist $(BUILD_DIR)\$@ $(ECHO) Copying $(BUILD_DIR)\$@ && $(CP) $(BUILD_DIR)\$@ . diff --git a/pthreads/tests/SIZES.GC b/pthreads/tests/SIZES.GC deleted file mode 100644 index d5ddf363f..000000000 --- a/pthreads/tests/SIZES.GC +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 160 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/pthreads/tests/SIZES.GCE b/pthreads/tests/SIZES.GCE deleted file mode 100644 index 709114d52..000000000 --- a/pthreads/tests/SIZES.GCE +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 96 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/pthreads/tests/SIZES.VC b/pthreads/tests/SIZES.VC deleted file mode 100644 index d5ddf363f..000000000 --- a/pthreads/tests/SIZES.VC +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 160 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/pthreads/tests/SIZES.VCE b/pthreads/tests/SIZES.VCE deleted file mode 100644 index 709114d52..000000000 --- a/pthreads/tests/SIZES.VCE +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 96 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/pthreads/tests/SIZES.VSE b/pthreads/tests/SIZES.VSE deleted file mode 100644 index 709114d52..000000000 --- a/pthreads/tests/SIZES.VSE +++ /dev/null @@ -1,21 +0,0 @@ -Sizes of pthreads-win32 structs -------------------------------- - pthread_t 8 - ptw32_thread_t 96 - pthread_attr_t_ 28 - sem_t_ 12 - pthread_mutex_t_ 28 - pthread_mutexattr_t_ 12 - pthread_spinlock_t_ 8 - pthread_barrier_t_ 36 - pthread_barrierattr_t_ 4 - pthread_key_t_ 16 - pthread_cond_t_ 32 - pthread_condattr_t_ 4 - pthread_rwlock_t_ 28 - pthread_rwlockattr_t_ 4 - pthread_once_t_ 16 - ptw32_cleanup_t 12 - ptw32_mcs_node_t_ 16 - sched_param 4 -------------------------------- diff --git a/pthreads/tests/Wmakefile b/pthreads/tests/Wmakefile index 2b37c4691..284f326cd 100644 --- a/pthreads/tests/Wmakefile +++ b/pthreads/tests/Wmakefile @@ -5,7 +5,7 @@ # # Pthreads-win32 - POSIX Threads Library for Win32 # Copyright(C) 1998 John E. Bossom -# Copyright(C) 1999,2005 Pthreads-win32 contributors +# Copyright(C) 1999,2012 Pthreads-win32 contributors # # Contact Email: rpj@callisto.canberra.edu.au # @@ -62,7 +62,7 @@ WCDLL = pthreadWC$(DLL_VER).dll # C++ Exceptions in application - using WC version of pthreads dll WCXFLAGS = -xs -d__CLEANUP_C -CFLAGS= -w4 -e25 -d_WIN32_WINNT=0x400 -d_REENTRANT -zq -bm $(OPTIM) -5r -bt=nt -mf -d2 +CFLAGS= -w4 -e25 -d_REENTRANT -zq -bm $(OPTIM) -5r -bt=nt -mf -d2 LFLAGS= INCLUDES= -i=. @@ -79,7 +79,7 @@ EHFLAGS = # If a test case returns a non-zero exit code to the shell, make will # stop. -PASSES = sizes.pass loadfree.pass & +PASSES = sizes.pass & self1.pass mutex5.pass & mutex1.pass mutex1n.pass mutex1e.pass mutex1r.pass & semaphore1.pass semaphore2.pass semaphore3.pass & @@ -89,7 +89,7 @@ PASSES = sizes.pass loadfree.pass & exit1.pass create1.pass create2.pass reuse1.pass reuse2.pass equal1.pass & sequence1.pass kill1.pass valid1.pass valid2.pass & exit2.pass exit3.pass exit4 exit5 & - join0.pass join1.pass detach1.pass join2.pass join3.pass & + join0.pass join1.pass detach1.pass join2.pass join3.pass join4.pass & mutex4.pass mutex6.pass mutex6n.pass mutex6e.pass mutex6r.pass & mutex6s.pass mutex6es.pass mutex6rs.pass & mutex7.pass mutex7n.pass mutex7e.pass mutex7r.pass & @@ -115,8 +115,10 @@ PASSES = sizes.pass loadfree.pass & priority1.pass priority2.pass inherit1.pass & spin1.pass spin2.pass spin3.pass spin4.pass & barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.pass & - exception1.pass exception2.pass exception3.pass & - cancel9.pass stress1.pass + exception1.pass exception2.pass exception3_0.pass exception3.pass & + cancel9.pass & + affinity1.pass affinity2.pass affinity3.pass affinity4.pass affinity5.pass & + stress1.pass BENCHRESULTS = & benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench @@ -213,6 +215,7 @@ clean: .SYMBOLIC @ if exist *.o $(RM) *.o @ if exist *.asm $(RM) *.asm @ if exist *.exe $(RM) *.exe + @ if exist *.manifest $(RM) *.manifest @ if exist *.pass $(RM) *.pass @ if exist *.bench $(RM) *.bench @ if exist *.log $(RM) *.log @@ -223,7 +226,13 @@ benchtest2.bench: benchtest3.bench: benchtest4.bench: benchtest5.bench: -barrier1.pass: + +affinity1.pass: +affinity2.pass: affinity1.pass +affinity3.pass: affinity2.pass +affinity4.pass: affinity3.pass +affinity5.pass: affinity4.pass +barrier1.pass: semaphore4.pass barrier2.pass: barrier1.pass barrier3.pass: barrier2.pass barrier4.pass: barrier3.pass @@ -267,7 +276,8 @@ equal1.pass: create1.pass errno1.pass: mutex3.pass exception1.pass: cancel4.pass exception2.pass: exception1.pass -exception3.pass: exception2.pass +exception3_0.pass: exception2.pass +exception3.pass: exception3_0.pass exit1.pass: exit2.pass: create1.pass exit3.pass: create1.pass @@ -279,8 +289,8 @@ join0.pass: create1.pass join1.pass: create1.pass join2.pass: create1.pass join3.pass: join2.pass +join4.pass: join3.pass kill1.pass: -loadfree.pass: pthread.dll mutex1.pass: self1.pass mutex1n.pass: mutex1.pass mutex1e.pass: mutex1.pass diff --git a/pthreads/tests/affinity1.c b/pthreads/tests/affinity1.c new file mode 100755 index 000000000..7014d8875 --- /dev/null +++ b/pthreads/tests/affinity1.c @@ -0,0 +1,111 @@ +/* + * affinity1.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Basic test of CPU_*() support routines. + * + */ + +#include "test.h" + +int +main() +{ + unsigned int cpu; + cpu_set_t newmask; + cpu_set_t src1mask; + cpu_set_t src2mask; + cpu_set_t src3mask; + + CPU_ZERO(&newmask); + CPU_ZERO(&src1mask); + memset(&src2mask, 0, sizeof(cpu_set_t)); + assert(memcmp(&src1mask, &src2mask, sizeof(cpu_set_t)) == 0); + assert(CPU_EQUAL(&src1mask, &src2mask)); + assert(CPU_COUNT(&src1mask) == 0); + + CPU_ZERO(&src1mask); + CPU_ZERO(&src2mask); + CPU_ZERO(&src3mask); + + for (cpu = 0; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &src1mask); /* 0b01010101010101010101010101010101 */ + } + for (cpu = 0; cpu < sizeof(cpu_set_t)*4; cpu++) + { + CPU_SET(cpu, &src2mask); /* 0b00000000000000001111111111111111 */ + } + for (cpu = sizeof(cpu_set_t)*4; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &src2mask); /* 0b01010101010101011111111111111111 */ + } + for (cpu = 0; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &src3mask); /* 0b01010101010101010101010101010101 */ + } + + assert(CPU_COUNT(&src1mask) == (sizeof(cpu_set_t)*4)); + assert(CPU_COUNT(&src2mask) == ((sizeof(cpu_set_t)*4 + (sizeof(cpu_set_t)*2)))); + assert(CPU_COUNT(&src3mask) == (sizeof(cpu_set_t)*4)); + CPU_SET(0, &newmask); + CPU_SET(1, &newmask); + CPU_SET(3, &newmask); + assert(CPU_ISSET(1, &newmask)); + CPU_CLR(1, &newmask); + assert(!CPU_ISSET(1, &newmask)); + CPU_OR(&newmask, &src1mask, &src2mask); + assert(CPU_EQUAL(&newmask, &src2mask)); + CPU_AND(&newmask, &src1mask, &src2mask); + assert(CPU_EQUAL(&newmask, &src1mask)); + CPU_XOR(&newmask, &src1mask, &src3mask); + memset(&src2mask, 0, sizeof(cpu_set_t)); + assert(memcmp(&newmask, &src2mask, sizeof(cpu_set_t)) == 0); + + /* + * Need to confirm the bitwise logical right-shift in CpuCount(). + * i.e. zeros inserted into MSB on shift because cpu_set_t is + * unsigned. + */ + CPU_ZERO(&src1mask); + for (cpu = 1; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &src1mask); /* 0b10101010101010101010101010101010 */ + } + assert(CPU_ISSET(sizeof(cpu_set_t)*8-1, &src1mask)); + assert(CPU_COUNT(&src1mask) == (sizeof(cpu_set_t)*4)); + + return 0; +} diff --git a/pthreads/tests/affinity2.c b/pthreads/tests/affinity2.c new file mode 100755 index 000000000..225840cf1 --- /dev/null +++ b/pthreads/tests/affinity2.c @@ -0,0 +1,102 @@ +/* + * affinity2.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Have the process switch CPUs. + * + */ + +#include "test.h" + +int +main() +{ + unsigned int cpu; + int result; + cpu_set_t newmask; + cpu_set_t mask; + cpu_set_t switchmask; + cpu_set_t flipmask; + + CPU_ZERO(&mask); + CPU_ZERO(&switchmask); + CPU_ZERO(&flipmask); + + for (cpu = 0; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &switchmask); /* 0b01010101010101010101010101010101 */ + } + for (cpu = 0; cpu < sizeof(cpu_set_t)*8; cpu++) + { + CPU_SET(cpu, &flipmask); /* 0b11111111111111111111111111111111 */ + } + + assert(sched_getaffinity(0, sizeof(cpu_set_t), &newmask) == 0); + assert(!CPU_EQUAL(&newmask, &mask)); + + result = sched_setaffinity(0, sizeof(cpu_set_t), &newmask); + if (result != 0) + { + int err = +#if defined(PTW32_USES_SEPARATE_CRT) + GetLastError(); +#else + errno; +#endif + + assert(err != ESRCH); + assert(err != EFAULT); + assert(err != EPERM); + assert(err != EINVAL); + assert(err != EAGAIN); + assert(err == ENOSYS); + assert(CPU_COUNT(&mask) == 1); + } + else + { + if (CPU_COUNT(&mask) > 1) + { + CPU_AND(&newmask, &mask, &switchmask); /* Remove every other CPU */ + assert(sched_setaffinity(0, sizeof(cpu_set_t), &newmask) == 0); + assert(sched_getaffinity(0, sizeof(cpu_set_t), &mask) == 0); + CPU_XOR(&newmask, &mask, &flipmask); /* Switch to all alternative CPUs */ + assert(sched_setaffinity(0, sizeof(cpu_set_t), &newmask) == 0); + assert(sched_getaffinity(0, sizeof(cpu_set_t), &mask) == 0); + assert(!CPU_EQUAL(&newmask, &mask)); + } + } + + return 0; +} diff --git a/pthreads/tests/affinity3.c b/pthreads/tests/affinity3.c new file mode 100755 index 000000000..065dd21a4 --- /dev/null +++ b/pthreads/tests/affinity3.c @@ -0,0 +1,100 @@ +/* + * affinity3.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Have the thread switch CPUs. + * + */ + +#include "test.h" + +int +main() +{ + int result; + unsigned int cpu; + cpu_set_t newmask; + cpu_set_t processCpus; + cpu_set_t mask; + cpu_set_t switchmask; + cpu_set_t flipmask; + pthread_t self = pthread_self(); + + CPU_ZERO(&mask); + CPU_ZERO(&switchmask); + CPU_ZERO(&flipmask); + + assert(pthread_getaffinity_np(self, sizeof(cpu_set_t), &processCpus) == 0); + printf("This thread has a starting affinity with %d CPUs\n", CPU_COUNT(&processCpus)); + assert(!CPU_EQUAL(&mask, &processCpus)); + + for (cpu = 0; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &switchmask); /* 0b01010101010101010101010101010101 */ + } + for (cpu = 0; cpu < sizeof(cpu_set_t)*8; cpu++) + { + CPU_SET(cpu, &flipmask); /* 0b11111111111111111111111111111111 */ + } + + result = pthread_setaffinity_np(self, sizeof(cpu_set_t), &processCpus); + if (result != 0) + { + assert(result != ESRCH); + assert(result != EFAULT); + assert(result != EPERM); + assert(result != EINVAL); + assert(result != EAGAIN); + assert(result == ENOSYS); + assert(CPU_COUNT(&mask) == 1); + } + else + { + if (CPU_COUNT(&mask) > 1) + { + CPU_AND(&newmask, &processCpus, &switchmask); /* Remove every other CPU */ + assert(pthread_setaffinity_np(self, sizeof(cpu_set_t), &newmask) == 0); + assert(pthread_getaffinity_np(self, sizeof(cpu_set_t), &mask) == 0); + assert(CPU_EQUAL(&mask, &newmask)); + CPU_XOR(&newmask, &mask, &flipmask); /* Switch to all alternative CPUs */ + assert(!CPU_EQUAL(&mask, &newmask)); + assert(pthread_setaffinity_np(self, sizeof(cpu_set_t), &newmask) == 0); + assert(pthread_getaffinity_np(self, sizeof(cpu_set_t), &mask) == 0); + assert(CPU_EQUAL(&mask, &newmask)); + } + } + + return 0; +} diff --git a/pthreads/tests/affinity4.c b/pthreads/tests/affinity4.c new file mode 100755 index 000000000..31aad46c2 --- /dev/null +++ b/pthreads/tests/affinity4.c @@ -0,0 +1,70 @@ +/* + * affinity4.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test thread CPU affinity setting. + * + */ + +#include "test.h" + +int +main() +{ + unsigned int cpu; + cpu_set_t threadCpus; + DWORD_PTR vThreadMask; + cpu_set_t keepCpus; + pthread_t self = pthread_self(); + + CPU_ZERO(&keepCpus); + for (cpu = 1; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &keepCpus); /* 0b10101010101010101010101010101010 */ + } + + assert(pthread_getaffinity_np(self, sizeof(cpu_set_t), &threadCpus) == 0); + if (CPU_COUNT(&threadCpus) > 1) + { + CPU_AND(&threadCpus, &threadCpus, &keepCpus); + vThreadMask = SetThreadAffinityMask(GetCurrentThread(), (*(PDWORD_PTR)&threadCpus) /* Violating Opacity */); + assert(pthread_setaffinity_np(self, sizeof(cpu_set_t), &threadCpus) == 0); + vThreadMask = SetThreadAffinityMask(GetCurrentThread(), vThreadMask); + assert(vThreadMask != 0); + assert(memcmp(&vThreadMask, &threadCpus, sizeof(DWORD_PTR)) == 0); + } + + return 0; +} diff --git a/pthreads/tests/affinity5.c b/pthreads/tests/affinity5.c new file mode 100755 index 000000000..8957e28f0 --- /dev/null +++ b/pthreads/tests/affinity5.c @@ -0,0 +1,103 @@ +/* + * affinity5.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test thread CPU affinity inheritance. + * + */ + +#include "test.h" + +typedef union +{ + /* Violates opacity */ + cpu_set_t cpuset; + unsigned long int bits; /* To stop GCC complaining about %lx args to printf */ +} cpuset_to_ulint; + +void * +mythread(void * arg) +{ + HANDLE threadH = GetCurrentThread(); + cpu_set_t *parentCpus = (cpu_set_t*) arg; + cpu_set_t threadCpus; + DWORD_PTR vThreadMask; + cpuset_to_ulint a, b; + + assert(pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &threadCpus) == 0); + assert(CPU_EQUAL(parentCpus, &threadCpus)); + vThreadMask = SetThreadAffinityMask(threadH, (*(PDWORD_PTR)&threadCpus) /* Violating Opacity */); + assert(vThreadMask != 0); + assert(memcmp(&vThreadMask, &threadCpus, sizeof(DWORD_PTR)) == 0); + a.cpuset = *parentCpus; + b.cpuset = threadCpus; + /* Violates opacity */ + printf("CPU affinity: Parent/Thread = 0x%lx/0x%lx\n", a.bits, b.bits); + + return (void*) 0; +} + +int +main() +{ + unsigned int cpu; + pthread_t tid; + cpu_set_t threadCpus; + DWORD_PTR vThreadMask; + cpu_set_t keepCpus; + pthread_t self = pthread_self(); + + CPU_ZERO(&keepCpus); + for (cpu = 1; cpu < sizeof(cpu_set_t)*8; cpu += 2) + { + CPU_SET(cpu, &keepCpus); /* 0b10101010101010101010101010101010 */ + } + + assert(pthread_getaffinity_np(self, sizeof(cpu_set_t), &threadCpus) == 0); + if (CPU_COUNT(&threadCpus) > 1) + { + assert(pthread_create(&tid, NULL, mythread, (void*)&threadCpus) == 0); + assert(pthread_join(tid, NULL) == 0); + CPU_AND(&threadCpus, &threadCpus, &keepCpus); + assert(pthread_setaffinity_np(self, sizeof(cpu_set_t), &threadCpus) == 0); + vThreadMask = SetThreadAffinityMask(GetCurrentThread(), (*(PDWORD_PTR)&threadCpus) /* Violating Opacity */); + assert(vThreadMask != 0); + assert(memcmp(&vThreadMask, &threadCpus, sizeof(DWORD_PTR)) == 0); + assert(pthread_create(&tid, NULL, mythread, (void*)&threadCpus) == 0); + assert(pthread_join(tid, NULL) == 0); + } + + return 0; +} diff --git a/pthreads/tests/barrier1.c b/pthreads/tests/barrier1.c index 76f78df66..cff727b9d 100644 --- a/pthreads/tests/barrier1.c +++ b/pthreads/tests/barrier1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/barrier2.c b/pthreads/tests/barrier2.c index 28aa238c5..1afd8d070 100644 --- a/pthreads/tests/barrier2.c +++ b/pthreads/tests/barrier2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/barrier3.c b/pthreads/tests/barrier3.c index dece77068..a3145519b 100644 --- a/pthreads/tests/barrier3.c +++ b/pthreads/tests/barrier3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/barrier4.c b/pthreads/tests/barrier4.c index 042992dfd..7c427e58b 100644 --- a/pthreads/tests/barrier4.c +++ b/pthreads/tests/barrier4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/barrier5.c b/pthreads/tests/barrier5.c index 353384081..86e698380 100644 --- a/pthreads/tests/barrier5.c +++ b/pthreads/tests/barrier5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/barrier6.c b/pthreads/tests/barrier6.c index 76c673779..d4d821454 100644 --- a/pthreads/tests/barrier6.c +++ b/pthreads/tests/barrier6.c @@ -1,117 +1,118 @@ -/* - * barrier6.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Destroy the barrier after initial count threads are released then let - * additional threads attempt to wait on it. - * - */ - -#include "test.h" - -enum { - NUMTHREADS = 31 -}; - -pthread_barrier_t barrier = NULL; -pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER; -static int serialThreadCount = 0; -static int otherThreadCount = 0; - -void * -func(void * arg) -{ - int result = pthread_barrier_wait(&barrier); - - assert(pthread_mutex_lock(&mx) == 0); - - if (result == PTHREAD_BARRIER_SERIAL_THREAD) - { - serialThreadCount++; - } - else if (0 == result) - { - otherThreadCount++; - } - assert(pthread_mutex_unlock(&mx) == 0); - - return NULL; -} - -int -main() -{ - int i, j, k; - pthread_t t[NUMTHREADS + 1]; - - for (j = 1; j <= NUMTHREADS; j++) - { - int howHigh = j/2 + 1; - - printf("Barrier height = %d, Total threads %d\n", howHigh, j); - - serialThreadCount = 0; - otherThreadCount = 0; - - assert(pthread_barrier_init(&barrier, NULL, howHigh) == 0); - - for (i = 1; i <= j; i++) - { - assert(pthread_create(&t[i], NULL, func, NULL) == 0); - - if (i == howHigh) - { - for (k = 1; k <= howHigh; k++) - { - assert(pthread_join(t[k], NULL) == 0); - } - assert(pthread_barrier_destroy(&barrier) == 0); - } - } - - for (i = howHigh+1; i <= j; i++) - { - assert(pthread_join(t[i], NULL) == 0); - } - - assert(serialThreadCount == 1); - assert(otherThreadCount == (howHigh - 1)); - - assert(pthread_barrier_destroy(&barrier) == EINVAL); - } - - assert(pthread_mutex_destroy(&mx) == 0); - - return 0; -} +/* + * barrier6.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Destroy the barrier after initial count threads are released then let + * additional threads attempt to wait on it. + * + */ + +#include "test.h" + +enum { + NUMTHREADS = 31 +}; + +pthread_barrier_t barrier = NULL; +pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER; +static int serialThreadCount = 0; +static int otherThreadCount = 0; + +void * +func(void * arg) +{ + int result = pthread_barrier_wait(&barrier); + + assert(pthread_mutex_lock(&mx) == 0); + + if (result == PTHREAD_BARRIER_SERIAL_THREAD) + { + serialThreadCount++; + } + else if (0 == result) + { + otherThreadCount++; + } + assert(pthread_mutex_unlock(&mx) == 0); + + return NULL; +} + +int +main() +{ + int i, j, k; + pthread_t t[NUMTHREADS + 1]; + + for (j = 1; j <= NUMTHREADS; j++) + { + int howHigh = j/2 + 1; + + printf("Barrier height = %d, Total threads %d\n", howHigh, j); + + serialThreadCount = 0; + otherThreadCount = 0; + + assert(pthread_barrier_init(&barrier, NULL, howHigh) == 0); + + for (i = 1; i <= j; i++) + { + assert(pthread_create(&t[i], NULL, func, NULL) == 0); + + if (i == howHigh) + { + for (k = 1; k <= howHigh; k++) + { + assert(pthread_join(t[k], NULL) == 0); + } + assert(pthread_barrier_destroy(&barrier) == 0); + } + } + + for (i = howHigh+1; i <= j; i++) + { + assert(pthread_join(t[i], NULL) == 0); + } + + assert(serialThreadCount == 1); + assert(otherThreadCount == (howHigh - 1)); + + assert(pthread_barrier_destroy(&barrier) == EINVAL); + } + + assert(pthread_mutex_destroy(&mx) == 0); + + return 0; +} diff --git a/pthreads/tests/benchlib.c b/pthreads/tests/benchlib.c index bf60ae515..d8f31ebd9 100644 --- a/pthreads/tests/benchlib.c +++ b/pthreads/tests/benchlib.c @@ -5,10 +5,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/benchtest.h b/pthreads/tests/benchtest.h index 809057810..81f132c8b 100644 --- a/pthreads/tests/benchtest.h +++ b/pthreads/tests/benchtest.h @@ -5,10 +5,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/benchtest1.c b/pthreads/tests/benchtest1.c index 191f98636..ea5810430 100644 --- a/pthreads/tests/benchtest1.c +++ b/pthreads/tests/benchtest1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -40,7 +41,6 @@ */ #include "test.h" -#include #ifdef __GNUC__ #include diff --git a/pthreads/tests/benchtest2.c b/pthreads/tests/benchtest2.c index 10f3d0ee8..bab680db9 100644 --- a/pthreads/tests/benchtest2.c +++ b/pthreads/tests/benchtest2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -43,7 +44,6 @@ */ #include "test.h" -#include #ifdef __GNUC__ #include diff --git a/pthreads/tests/benchtest3.c b/pthreads/tests/benchtest3.c index 7d03ed884..fc0e261df 100644 --- a/pthreads/tests/benchtest3.c +++ b/pthreads/tests/benchtest3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -40,7 +41,6 @@ */ #include "test.h" -#include #ifdef __GNUC__ #include diff --git a/pthreads/tests/benchtest4.c b/pthreads/tests/benchtest4.c index d7cf47c3b..0f59537fe 100644 --- a/pthreads/tests/benchtest4.c +++ b/pthreads/tests/benchtest4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -40,7 +41,6 @@ */ #include "test.h" -#include #ifdef __GNUC__ #include diff --git a/pthreads/tests/benchtest5.c b/pthreads/tests/benchtest5.c index d262baf11..9371ec5e0 100644 --- a/pthreads/tests/benchtest5.c +++ b/pthreads/tests/benchtest5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -40,7 +41,6 @@ */ #include "test.h" -#include #ifdef __GNUC__ #include diff --git a/pthreads/tests/cancel1.c b/pthreads/tests/cancel1.c index 23d2726a2..f93c497b4 100644 --- a/pthreads/tests/cancel1.c +++ b/pthreads/tests/cancel1.c @@ -6,26 +6,27 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the * following World Wide Web location: * http://sources.redhat.com/pthreads-win32/contributors.html - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library in the file COPYING.LIB; * if not, write to the Free Software Foundation, Inc., @@ -34,26 +35,26 @@ * -------------------------------------------------------------------------- * * Test Synopsis: Test setting cancel state and cancel type. - * - + * - * * Test Method (Validation or Falsification): - * - + * - * * Requirements Tested: * - pthread_setcancelstate function * - pthread_setcanceltype function * * Features Tested: - * - + * - * * Cases Tested: - * - + * - * * Description: - * - + * - * * Environment: - * - + * - * * Input: * - None. @@ -139,7 +140,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ /* @@ -151,7 +152,7 @@ main() * Standard check that all threads started. */ for (i = 1; i <= NUMTHREADS; i++) - { + { failed = !threadbag[i].started; if (failed) @@ -163,10 +164,10 @@ main() assert(!failed); /* - * Check any results here. Set "failed" and only print ouput on failure. + * Check any results here. Set "failed" and only print output on failure. */ for (i = 1; i <= NUMTHREADS; i++) - { + { /* ... */ } diff --git a/pthreads/tests/cancel2.c b/pthreads/tests/cancel2.c index 2ee596abb..941061369 100644 --- a/pthreads/tests/cancel2.c +++ b/pthreads/tests/cancel2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -95,7 +96,7 @@ struct bag_t_ { static bag_t threadbag[NUMTHREADS + 1]; -static pthread_mutex_t waitLock = PTHREAD_MUTEX_INITIALIZER; +static pthread_barrier_t go = NULL; void * mythread(void * arg) @@ -110,18 +111,8 @@ mythread(void * arg) /* Set to known state and type */ assert(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) == 0); - - switch (bag->threadnum % 2) - { - case 0: - assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); - result = 0; - break; - case 1: - assert(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) == 0); - result = 1; - break; - } + assert(pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL) == 0); + result = 1; #if !defined(__cplusplus) __try @@ -130,14 +121,10 @@ mythread(void * arg) #endif { /* Wait for go from main */ - assert(pthread_mutex_lock(&waitLock) == 0); - assert(pthread_mutex_unlock(&waitLock) == 0); - sched_yield(); + pthread_barrier_wait(&go); + pthread_barrier_wait(&go); - for (;;) - { - pthread_testcancel(); - } + pthread_testcancel(); } #if !defined(__cplusplus) __except(EXCEPTION_EXECUTE_HANDLER) @@ -160,7 +147,7 @@ mythread(void * arg) */ result += 1000; - return (void *) (size_t)result; + return (void *)(size_t)result; } int @@ -171,7 +158,7 @@ main() pthread_t t[NUMTHREADS + 1]; assert((t[0] = pthread_self()).p != NULL); - assert(pthread_mutex_lock(&waitLock) == 0); + assert(pthread_barrier_init(&go, NULL, NUMTHREADS + 1) == 0); for (i = 1; i <= NUMTHREADS; i++) { @@ -181,23 +168,17 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ - Sleep(500); - assert(pthread_mutex_unlock(&waitLock) == 0); - - Sleep(500); + pthread_barrier_wait(&go); for (i = 1; i <= NUMTHREADS; i++) { assert(pthread_cancel(t[i]) == 0); } - /* - * Give threads time to run. - */ - Sleep(NUMTHREADS * 100); + pthread_barrier_wait(&go); /* * Standard check that all threads started. @@ -223,19 +204,19 @@ main() void* result = (void*)0; assert(pthread_join(t[i], &result) == 0); - fail = ((int)(size_t)result != (int) PTHREAD_CANCELED); + fail = (result != PTHREAD_CANCELED); if (fail) { - fprintf(stderr, "Thread %d: started %d: location %d: cancel type %s\n", + fprintf(stderr, "Thread %d: started %d: location %d\n", i, threadbag[i].started, - (int)(size_t)result, - (((int)(size_t)result % 2) == 0) ? "ASYNCHRONOUS" : "DEFERRED"); + (int)(size_t)result); } failed |= fail; } assert(!failed); + assert(pthread_barrier_destroy(&go) == 0); /* * Success. diff --git a/pthreads/tests/cancel3.c b/pthreads/tests/cancel3.c index 5020648a6..742cbc4ff 100644 --- a/pthreads/tests/cancel3.c +++ b/pthreads/tests/cancel3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -33,7 +34,7 @@ * * -------------------------------------------------------------------------- * - * Test Synopsis: Test asynchronous cancelation (alertable or non-alertable). + * Test Synopsis: Test asynchronous cancellation (alertable or non-alertable). * * Test Method (Validation or Falsification): * - @@ -111,7 +112,7 @@ mythread (void *arg) /* * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (bag->count = 0; bag->count < 100; bag->count++) Sleep (100); @@ -137,7 +138,7 @@ main () } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep (NUMTHREADS * 100); @@ -176,9 +177,9 @@ main () void* result = (void*)0; /* - * The thread does not contain any cancelation points, so + * The thread does not contain any cancellation points, so * a return value of PTHREAD_CANCELED confirms that async - * cancelation succeeded. + * cancellation succeeded. */ assert (pthread_join (t[i], &result) == 0); diff --git a/pthreads/tests/cancel4.c b/pthreads/tests/cancel4.c index 893f33b12..4267f1728 100644 --- a/pthreads/tests/cancel4.c +++ b/pthreads/tests/cancel4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -33,8 +34,8 @@ * * -------------------------------------------------------------------------- * - * Test Synopsis: Test cancelation does not occur in deferred - * cancelation threads with no cancelation points. + * Test Synopsis: Test cancellation does not occur in deferred + * cancellation threads with no cancellation points. * * Test Method (Validation or Falsification): * - @@ -113,7 +114,7 @@ mythread(void * arg) /* * We wait up to 2 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (bag->count = 0; bag->count < 20; bag->count++) Sleep(100); @@ -138,7 +139,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); @@ -176,9 +177,9 @@ main() void* result = (void*)0; /* - * The thread does not contain any cancelation points, so + * The thread does not contain any cancellation points, so * a return value of PTHREAD_CANCELED indicates that async - * cancelation occurred. + * cancellation occurred. */ assert(pthread_join(t[i], &result) == 0); diff --git a/pthreads/tests/cancel5.c b/pthreads/tests/cancel5.c index 6c3951634..e78cf08c2 100644 --- a/pthreads/tests/cancel5.c +++ b/pthreads/tests/cancel5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -111,7 +112,7 @@ mythread (void *arg) /* * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (bag->count = 0; bag->count < 100; bag->count++) Sleep (100); @@ -135,7 +136,7 @@ main () } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep (500); @@ -174,9 +175,9 @@ main () void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); /* - * The thread does not contain any cancelation points, so + * The thread does not contain any cancellation points, so * a return value of PTHREAD_CANCELED confirms that async - * cancelation succeeded. + * cancellation succeeded. */ assert (pthread_join (t[i], &result) == 0); diff --git a/pthreads/tests/cancel6a.c b/pthreads/tests/cancel6a.c index 58063d573..3a81eae6d 100644 --- a/pthreads/tests/cancel6a.c +++ b/pthreads/tests/cancel6a.c @@ -24,7 +24,7 @@ * * -------------------------------------------------------------------------- * - * Test Synopsis: Test double cancelation - asynchronous. + * Test Synopsis: Test double cancellation - asynchronous. * Second attempt should fail (ESRCH). * * Test Method (Validation or Falsification): @@ -100,7 +100,7 @@ mythread(void * arg) /* * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (bag->count = 0; bag->count < 100; bag->count++) Sleep(100); @@ -125,7 +125,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); @@ -164,9 +164,9 @@ main() void* result = (void*)0; /* - * The thread does not contain any cancelation points, so + * The thread does not contain any cancellation points, so * a return value of PTHREAD_CANCELED confirms that async - * cancelation succeeded. + * cancellation succeeded. */ assert(pthread_join(t[i], &result) == 0); diff --git a/pthreads/tests/cancel6d.c b/pthreads/tests/cancel6d.c index 37f9ca5f3..f94ed5ac8 100644 --- a/pthreads/tests/cancel6d.c +++ b/pthreads/tests/cancel6d.c @@ -24,9 +24,9 @@ * * -------------------------------------------------------------------------- * - * Test Synopsis: Test double cancelation - deferred. + * Test Synopsis: Test double cancellation - deferred. * Second attempt should succeed (unless the canceled thread has started - * cancelation already - not tested here). + * cancellation already - not tested here). * * Test Method (Validation or Falsification): * - @@ -101,7 +101,7 @@ mythread(void * arg) /* * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (bag->count = 0; bag->count < 100; bag->count++) { @@ -129,7 +129,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); @@ -138,7 +138,7 @@ main() assert(pthread_cancel(t[i]) == 0); if (pthread_cancel(t[i]) != 0) { - printf("Second cancelation failed but this is expected sometimes.\n"); + printf("Second cancellation failed but this is expected sometimes.\n"); } } diff --git a/pthreads/tests/cancel7.c b/pthreads/tests/cancel7.c index 5f1390f7b..cdd8b1565 100644 --- a/pthreads/tests/cancel7.c +++ b/pthreads/tests/cancel7.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -143,7 +144,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); diff --git a/pthreads/tests/cancel8.c b/pthreads/tests/cancel8.c index 7204d19b1..697593f63 100644 --- a/pthreads/tests/cancel8.c +++ b/pthreads/tests/cancel8.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -144,7 +145,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); diff --git a/pthreads/tests/cancel9.c b/pthreads/tests/cancel9.c index b0091614a..8f0f15144 100644 --- a/pthreads/tests/cancel9.c +++ b/pthreads/tests/cancel9.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -33,7 +34,7 @@ * * -------------------------------------------------------------------------- * - * Test Synopsis: Test true asynchronous cancelation with Alert driver. + * Test Synopsis: Test true asynchronous cancellation with Alert driver. * * Test Method (Validation or Falsification): * - @@ -172,7 +173,7 @@ main () Sleep (100); assert (pthread_cancel (t) == 0); assert (pthread_join (t, &result) == 0); - assert (result == PTHREAD_CANCELED && "test_sleep" != NULL); + assert (result == PTHREAD_CANCELED && "test_sleep"); printf ("Cancel waiting thread.\n"); assert (pthread_create (&t, NULL, test_wait, NULL) == 0); @@ -188,7 +189,7 @@ main () Sleep (100); assert (pthread_cancel (t) == 0); assert (pthread_join (t, &result) == 0); - assert (result == PTHREAD_CANCELED && "test_udp" != NULL); + assert (result == PTHREAD_CANCELED && "test_udp"); } else { diff --git a/pthreads/tests/cleanup0.c b/pthreads/tests/cleanup0.c index d9fbedccc..888640b7f 100644 --- a/pthreads/tests/cleanup0.c +++ b/pthreads/tests/cleanup0.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -97,7 +98,7 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t pop_count = {0, {0}}; +static sharedInt_t pop_count; static void increment_pop_count(void * arg) @@ -147,6 +148,8 @@ main() int i; pthread_t t[NUMTHREADS + 1]; + memset(&pop_count, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&pop_count.cs); assert((t[0] = pthread_self()).p != NULL); @@ -159,7 +162,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); @@ -193,7 +196,7 @@ main() assert(pthread_join(t[i], &result) == 0); - fail = ((int)(size_t)result == (int) PTHREAD_CANCELED); + fail = (result == PTHREAD_CANCELED); if (fail) { diff --git a/pthreads/tests/cleanup1.c b/pthreads/tests/cleanup1.c index 30d4940b7..a59d05616 100644 --- a/pthreads/tests/cleanup1.c +++ b/pthreads/tests/cleanup1.c @@ -6,26 +6,27 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the * following World Wide Web location: * http://sources.redhat.com/pthreads-win32/contributors.html - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library in the file COPYING.LIB; * if not, write to the Free Software Foundation, Inc., @@ -36,22 +37,22 @@ * Test Synopsis: Test cleanup handler executes (when thread is canceled). * * Test Method (Validation or Falsification): - * - + * - * * Requirements Tested: * - * * Features Tested: - * - + * - * * Cases Tested: - * - + * - * * Description: - * - + * - * * Environment: - * - + * - * * Input: * - None. @@ -97,7 +98,7 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t pop_count = {0, {0}}; +static sharedInt_t pop_count; static void #ifdef __CLEANUP_C @@ -133,10 +134,10 @@ mythread(void * arg) #endif pthread_cleanup_push(increment_pop_count, (void *) &pop_count); /* - * We don't have true async cancelation - it relies on the thread + * We don't have true async cancellation - it relies on the thread * at least re-entering the run state at some point. * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (bag->count = 0; bag->count < 100; bag->count++) Sleep(100); @@ -156,6 +157,8 @@ main() int i; pthread_t t[NUMTHREADS + 1]; + memset(&pop_count, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&pop_count.cs); assert((t[0] = pthread_self()).p != NULL); @@ -168,7 +171,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); @@ -188,10 +191,10 @@ main() for (i = 1; i <= NUMTHREADS; i++) { if (!threadbag[i].started) - { - failed |= !threadbag[i].started; - fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); - } + { + failed |= !threadbag[i].started; + fprintf(stderr, "Thread %d: started %d\n", i, threadbag[i].started); + } } assert(!failed); @@ -207,7 +210,7 @@ main() assert(pthread_join(t[i], &result) == 0); - fail = ((int)(size_t)result != (int) PTHREAD_CANCELED); + fail = (result != PTHREAD_CANCELED); if (fail) { diff --git a/pthreads/tests/cleanup2.c b/pthreads/tests/cleanup2.c index 67037c255..52a804e6a 100644 --- a/pthreads/tests/cleanup2.c +++ b/pthreads/tests/cleanup2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -97,7 +98,7 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t pop_count = {0, {0}}; +static sharedInt_t pop_count; static void increment_pop_count(void * arg) @@ -141,6 +142,8 @@ main() int i; pthread_t t[NUMTHREADS + 1]; + memset(&pop_count, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&pop_count.cs); assert((t[0] = pthread_self()).p != NULL); @@ -153,7 +156,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(1000); diff --git a/pthreads/tests/cleanup3.c b/pthreads/tests/cleanup3.c index 62317b3b0..7d6a4b96a 100644 --- a/pthreads/tests/cleanup3.c +++ b/pthreads/tests/cleanup3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -98,7 +99,7 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t pop_count = {0, {0}}; +static sharedInt_t pop_count; static void increment_pop_count(void * arg) @@ -146,6 +147,8 @@ main() int i; pthread_t t[NUMTHREADS + 1]; + memset(&pop_count, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&pop_count.cs); assert((t[0] = pthread_self()).p != NULL); @@ -158,7 +161,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(1000); diff --git a/pthreads/tests/common.mk b/pthreads/tests/common.mk new file mode 100755 index 000000000..06a21be38 --- /dev/null +++ b/pthreads/tests/common.mk @@ -0,0 +1,53 @@ +# +# Common elements to all makefiles +# + +ALL_KNOWN_TESTS = \ + affinity1 affinity2 affinity3 affinity4 affinity5 \ + barrier1 barrier2 barrier3 barrier4 barrier5 barrier6 \ + cancel1 cancel2 cancel3 cancel4 cancel5 cancel6a cancel6d \ + cancel7 cancel8 cancel9 \ + cleanup0 cleanup1 cleanup2 cleanup3 \ + condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 \ + condvar3 condvar3_1 condvar3_2 condvar3_3 \ + condvar4 condvar5 condvar6 \ + condvar7 condvar8 condvar9 \ + count1 \ + context1 \ + create1 create2 create3 \ + delay1 delay2 \ + detach1 \ + equal1 \ + errno1 \ + exception1 exception2 exception3_0 exception3 \ + exit1 exit2 exit3 exit4 exit5 \ + eyal1 \ + join0 join1 join2 join3 join4 \ + kill1 \ + mutex1 mutex1n mutex1e mutex1r \ + mutex2 mutex2r mutex2e mutex3 mutex3r mutex3e \ + mutex4 mutex5 mutex6 mutex6n mutex6e mutex6r \ + mutex6s mutex6es mutex6rs \ + mutex7 mutex7n mutex7e mutex7r \ + mutex8 mutex8n mutex8e mutex8r \ + once1 once2 once3 once4 \ + priority1 priority2 inherit1 \ + reuse1 reuse2 \ + robust1 robust2 robust3 robust4 robust5 \ + rwlock1 rwlock2 rwlock3 rwlock4 \ + rwlock2_t rwlock3_t rwlock4_t rwlock5_t rwlock6_t rwlock6_t2 \ + rwlock5 rwlock6 rwlock7 rwlock8 \ + self1 self2 \ + semaphore1 semaphore2 semaphore3 \ + semaphore4 semaphore4t semaphore5 \ + sequence1 \ + sizes \ + spin1 spin2 spin3 spin4 \ + stress1 \ + tsd1 tsd2 \ + valid1 valid2 + +TESTS = $(ALL_KNOWN_TESTS) + +BENCHTESTS = \ + benchtest1 benchtest2 benchtest3 benchtest4 benchtest5 diff --git a/pthreads/tests/condvar1.c b/pthreads/tests/condvar1.c index 380ab1aff..303a87b87 100644 --- a/pthreads/tests/condvar1.c +++ b/pthreads/tests/condvar1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar1_1.c b/pthreads/tests/condvar1_1.c index a05e113b9..565697e5d 100644 --- a/pthreads/tests/condvar1_1.c +++ b/pthreads/tests/condvar1_1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar1_2.c b/pthreads/tests/condvar1_2.c index 3d961f06d..61185518a 100644 --- a/pthreads/tests/condvar1_2.c +++ b/pthreads/tests/condvar1_2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar2.c b/pthreads/tests/condvar2.c index 6e2fa52d2..452b22bea 100644 --- a/pthreads/tests/condvar2.c +++ b/pthreads/tests/condvar2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -113,10 +114,10 @@ main() if (result != 0) { fprintf(stderr, "Result = %s\n", error_string[result]); - fprintf(stderr, "\tWaitersBlocked = %ld\n", cv->nWaitersBlocked); - fprintf(stderr, "\tWaitersGone = %ld\n", cv->nWaitersGone); - fprintf(stderr, "\tWaitersToUnblock = %ld\n", cv->nWaitersToUnblock); - fflush(stderr); + fprintf(stderr, "\tWaitersBlocked = %ld\n", cv->nWaitersBlocked); + fprintf(stderr, "\tWaitersGone = %ld\n", cv->nWaitersGone); + fprintf(stderr, "\tWaitersToUnblock = %ld\n", cv->nWaitersToUnblock); + fflush(stderr); } assert(result == 0); } diff --git a/pthreads/tests/condvar2_1.c b/pthreads/tests/condvar2_1.c index 3486d2110..dc3675566 100644 --- a/pthreads/tests/condvar2_1.c +++ b/pthreads/tests/condvar2_1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar3.c b/pthreads/tests/condvar3.c index 056334b37..2fed04143 100644 --- a/pthreads/tests/condvar3.c +++ b/pthreads/tests/condvar3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar3_1.c b/pthreads/tests/condvar3_1.c index 33baeb14d..79638fa75 100644 --- a/pthreads/tests/condvar3_1.c +++ b/pthreads/tests/condvar3_1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar3_2.c b/pthreads/tests/condvar3_2.c index 4c3580152..0cb332ced 100644 --- a/pthreads/tests/condvar3_2.c +++ b/pthreads/tests/condvar3_2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar3_3.c b/pthreads/tests/condvar3_3.c index f842440a1..7a5fc651a 100644 --- a/pthreads/tests/condvar3_3.c +++ b/pthreads/tests/condvar3_3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar4.c b/pthreads/tests/condvar4.c index 3f6879b0a..f69e0a97e 100644 --- a/pthreads/tests/condvar4.c +++ b/pthreads/tests/condvar4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar5.c b/pthreads/tests/condvar5.c index 73083a55e..8d678d3a2 100644 --- a/pthreads/tests/condvar5.c +++ b/pthreads/tests/condvar5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/condvar6.c b/pthreads/tests/condvar6.c index 9d0b75d81..fbf0c8711 100644 --- a/pthreads/tests/condvar6.c +++ b/pthreads/tests/condvar6.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -176,7 +177,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ assert(pthread_mutex_unlock(&start_flag) == 0); diff --git a/pthreads/tests/condvar7.c b/pthreads/tests/condvar7.c index 0647e7d91..d0a1e951d 100644 --- a/pthreads/tests/condvar7.c +++ b/pthreads/tests/condvar7.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -34,7 +35,7 @@ * -------------------------------------------------------------------------- * * Test Synopsis: - * - Test pthread_cond_broadcast with thread cancelation. + * - Test pthread_cond_broadcast with thread cancellation. * * Test Method (Validation or Falsification): * - Validation @@ -186,7 +187,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ assert(pthread_mutex_unlock(&start_flag) == 0); diff --git a/pthreads/tests/condvar8.c b/pthreads/tests/condvar8.c index 7c2579d98..a05ccb59c 100644 --- a/pthreads/tests/condvar8.c +++ b/pthreads/tests/condvar8.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -189,7 +190,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ cvthing.shared = 0; diff --git a/pthreads/tests/condvar9.c b/pthreads/tests/condvar9.c index 62d044bf8..910d37b27 100644 --- a/pthreads/tests/condvar9.c +++ b/pthreads/tests/condvar9.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -34,7 +35,7 @@ * -------------------------------------------------------------------------- * * Test Synopsis: - * - Test multiple pthread_cond_broadcasts with thread cancelation. + * - Test multiple pthread_cond_broadcasts with thread cancellation. * * Test Method (Validation or Falsification): * - Validation @@ -128,7 +129,7 @@ mythread(void * arg) assert(pthread_mutex_lock(&cvthing.lock) == 0); /* - * pthread_cond_timedwait is a cancelation point and we're + * pthread_cond_timedwait is a cancellation point and we're * going to cancel some threads deliberately. */ #ifdef _MSC_VER @@ -199,7 +200,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ cvthing.shared = 0; diff --git a/pthreads/tests/context1.c b/pthreads/tests/context1.c index db38ec3a1..284d89f70 100644 --- a/pthreads/tests/context1.c +++ b/pthreads/tests/context1.c @@ -1,142 +1,142 @@ -/* - * File: context1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Test context switching method. - * - * Test Method (Validation or Falsification): - * - - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - pthread_create - * pthread_exit - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -#define _WIN32_WINNT 0x400 - -#include "test.h" -#include "../implement.h" -#include "../context.h" - -static int washere = 0; - -static void * func(void * arg) -{ - washere = 1; - - Sleep(1000); - - return 0; -} - -static void -anotherEnding () -{ - /* - * Switched context - */ - washere++; - - pthread_exit(0); -} - -int -main() -{ - pthread_t t; - HANDLE hThread; - - assert(pthread_create(&t, NULL, func, NULL) == 0); - - hThread = ((ptw32_thread_t *)t.p)->threadH; - - Sleep(500); - - SuspendThread(hThread); - - if (WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT) - { - /* - * Ok, thread did not exit before we got to it. - */ - CONTEXT context; - - context.ContextFlags = CONTEXT_CONTROL; - - GetThreadContext(hThread, &context); - PTW32_PROGCTR (context) = (DWORD_PTR) anotherEnding; - SetThreadContext(hThread, &context); - ResumeThread(hThread); - } - else - { - printf("Exited early\n"); - fflush(stdout); - } - - Sleep(1000); - - assert(washere == 2); - - return 0; -} - +/* + * File: context1.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test Synopsis: Test context switching method. + * + * Test Method (Validation or Falsification): + * - + * + * Requirements Tested: + * - + * + * Features Tested: + * - + * + * Cases Tested: + * - + * + * Description: + * - + * + * Environment: + * - + * + * Input: + * - None. + * + * Output: + * - File name, Line number, and failed expression on failure. + * - No output on success. + * + * Assumptions: + * - pthread_create + * pthread_exit + * + * Pass Criteria: + * - Process returns zero exit status. + * + * Fail Criteria: + * - Process returns non-zero exit status. + */ + +#define _WIN32_WINNT 0x400 + +#include "test.h" +#include "../implement.h" +#include "../context.h" + +static int washere = 0; + +static void * func(void * arg) +{ + washere = 1; + + Sleep(1000); + + return 0; +} + +static void +anotherEnding () +{ + /* + * Switched context + */ + washere++; + pthread_exit(0); +} + +int +main() +{ + pthread_t t; + HANDLE hThread; + + assert(pthread_create(&t, NULL, func, NULL) == 0); + + hThread = ((ptw32_thread_t *)t.p)->threadH; + + Sleep(500); + + SuspendThread(hThread); + + if (WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT) + { + /* + * Ok, thread did not exit before we got to it. + */ + CONTEXT context; + + context.ContextFlags = CONTEXT_CONTROL; + + GetThreadContext(hThread, &context); + PTW32_PROGCTR (context) = (DWORD_PTR) anotherEnding; + SetThreadContext(hThread, &context); + ResumeThread(hThread); + } + else + { + printf("Exited early\n"); + fflush(stdout); + } + + Sleep(1000); + + assert(washere == 2); + + return 0; +} + diff --git a/pthreads/tests/context2.c b/pthreads/tests/context2.c new file mode 100755 index 000000000..154948a4f --- /dev/null +++ b/pthreads/tests/context2.c @@ -0,0 +1,157 @@ +/* + * File: context2.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2005 Pthreads-win32 contributors + * + * Contact Email: rpj@callisto.canberra.edu.au + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test Synopsis: Test context switching method. + * + * Test Method (Validation or Falsification): + * - + * + * Requirements Tested: + * - + * + * Features Tested: + * - + * + * Cases Tested: + * - + * + * Description: + * - + * + * Environment: + * - + * + * Input: + * - None. + * + * Output: + * - File name, Line number, and failed expression on failure. + * - No output on success. + * + * Assumptions: + * - pthread_create + * pthread_exit + * + * Pass Criteria: + * - Process returns zero exit status. + * + * Fail Criteria: + * - Process returns non-zero exit status. + */ + +#define _WIN32_WINNT 0x400 + +#include "test.h" +#include "../implement.h" +#include "../context.h" + +static int washere = 0; +static volatile size_t tree_counter = 0; + +#ifdef _MSC_VER +# pragma inline_depth(0) +# pragma optimize("g", off) +#endif + +static size_t tree(size_t depth) +{ + if (! depth--) + return tree_counter++; + + return tree(depth) + tree(depth); +} + +static void * func(void * arg) +{ + washere = 1; + + return (void *) tree(64); +} + +static void +anotherEnding () +{ + /* + * Switched context + */ + washere++; + pthread_exit(0); +} + +#ifdef _MSC_VER +# pragma inline_depth() +# pragma optimize("", on) +#endif + +int +main() +{ + pthread_t t; + HANDLE hThread; + + assert(pthread_create(&t, NULL, func, NULL) == 0); + + hThread = ((ptw32_thread_t *)t.p)->threadH; + + Sleep(500); + + SuspendThread(hThread); + + if (WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT) + { + /* + * Ok, thread did not exit before we got to it. + */ + CONTEXT context; + + context.ContextFlags = CONTEXT_CONTROL; + + GetThreadContext(hThread, &context); + PTW32_PROGCTR (context) = (DWORD_PTR) anotherEnding; + SetThreadContext(hThread, &context); + ResumeThread(hThread); + } + else + { + printf("Exited early\n"); + fflush(stdout); + } + + Sleep(1000); + + assert(washere == 2); + + return 0; +} diff --git a/pthreads/tests/count1.c b/pthreads/tests/count1.c index c2386b0e9..c639fd270 100644 --- a/pthreads/tests/count1.c +++ b/pthreads/tests/count1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/create1.c b/pthreads/tests/create1.c index 8c630cb93..63b1bf6eb 100644 --- a/pthreads/tests/create1.c +++ b/pthreads/tests/create1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/create2.c b/pthreads/tests/create2.c index 9b4e86480..9e56d9d40 100644 --- a/pthreads/tests/create2.c +++ b/pthreads/tests/create2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/create3.c b/pthreads/tests/create3.c new file mode 100755 index 000000000..5063d0ba7 --- /dev/null +++ b/pthreads/tests/create3.c @@ -0,0 +1,110 @@ +/* + * File: create3.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test Synopsis: + * - Test passing arg to thread function. + * + * Test Method (Validation or Falsification): + * - Statistical, not absolute (depends on sample size). + * + * Requirements Tested: + * - + * + * Features Tested: + * - + * + * Cases Tested: + * - + * + * Description: + * - + * + * Environment: + * - + * + * Input: + * - None. + * + * Output: + * - File name, Line number, and failed expression on failure. + * - No output on success. + * + * Assumptions: + * - + * + * Pass Criteria: + * - Process returns zero exit status. + * + * Fail Criteria: + * - Process returns non-zero exit status. + */ + +#include "test.h" + +enum { + NUMTHREADS = 10000 +}; + +static int washere = 0; + +void * func(void * arg) +{ + washere = (int)(size_t)arg; + return (void *) 0; +} + +int +main() +{ + pthread_t t; + pthread_attr_t attr; + void * result = NULL; + int i; + + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + + for (i = 0; i < NUMTHREADS; i++) + { + washere = 0; + assert(pthread_create(&t, &attr, func, (void *)(size_t)1) == 0); + assert(pthread_join(t, &result) == 0); + assert((int)(size_t)result == 0); + assert(washere == 1); + } + + return 0; +} diff --git a/pthreads/tests/delay1.c b/pthreads/tests/delay1.c index 83becd890..9c5293e87 100644 --- a/pthreads/tests/delay1.c +++ b/pthreads/tests/delay1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/delay2.c b/pthreads/tests/delay2.c index 071b837f1..5ff6c1deb 100644 --- a/pthreads/tests/delay2.c +++ b/pthreads/tests/delay2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/detach1.c b/pthreads/tests/detach1.c index 89756c7ad..4eb8cb73d 100644 --- a/pthreads/tests/detach1.c +++ b/pthreads/tests/detach1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/equal1.c b/pthreads/tests/equal1.c index 8932bb2aa..2dfa79425 100644 --- a/pthreads/tests/equal1.c +++ b/pthreads/tests/equal1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/errno1.c b/pthreads/tests/errno1.c index 70ce92802..14e8150a9 100644 --- a/pthreads/tests/errno1.c +++ b/pthreads/tests/errno1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -135,7 +136,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(2000); pthread_mutex_unlock(&stop_here); diff --git a/pthreads/tests/exception1.c b/pthreads/tests/exception1.c index 62a5a63cb..5470ad993 100644 --- a/pthreads/tests/exception1.c +++ b/pthreads/tests/exception1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -153,7 +154,7 @@ canceledThread(void * arg) { /* * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (count = 0; count < 100; count++) Sleep(100); @@ -168,7 +169,7 @@ canceledThread(void * arg) { /* * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * for a cancellation to be applied to us. */ for (count = 0; count < 100; count++) Sleep(100); @@ -205,7 +206,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(1000); diff --git a/pthreads/tests/exception2.c b/pthreads/tests/exception2.c index faf677d9b..fffe2b558 100644 --- a/pthreads/tests/exception2.c +++ b/pthreads/tests/exception2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -125,10 +126,21 @@ main(int argc, char* argv[]) printf("You should see an \"abnormal termination\" message\n"); fflush(stdout); + result = system("exception2.exe die"); - exit(0); + + printf("\"exception2.exe die\" returned status %d\n", result); + + /* + * result should be 0, 1 or 3 depending on build settings + */ + exit((result == 0 || result == 1 || result == 3) ? 0 : 1); } +#if defined(NO_ERROR_DIALOGS) + SetErrorMode(SEM_NOGPFAULTERRORBOX); +#endif + assert((mt = pthread_self()).p != NULL); for (i = 0; i < NUMTHREADS; i++) @@ -136,7 +148,7 @@ main(int argc, char* argv[]) assert(pthread_create(&et[i], NULL, exceptionedThread, NULL) == 0); } - Sleep(1000); + Sleep(100); /* * Success. diff --git a/pthreads/tests/exception3.c b/pthreads/tests/exception3.c index 65bcdbef3..3b9ec6fd9 100644 --- a/pthreads/tests/exception3.c +++ b/pthreads/tests/exception3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -73,7 +74,13 @@ #include "test.h" -#if defined(__cplusplus) +/* + * Note: Due to a buggy C++ runtime in Visual Studio 2005, when we are + * built with /MD and an unhandled exception occurs, the runtime does not + * properly call the terminate handler specified by set_terminate(). + */ +#if defined(__cplusplus) \ + && !(defined(_MSC_VER) && _MSC_VER == 1400 && defined(_DLL) && !defined(_DEBUG)) #if defined(_MSC_VER) # include @@ -90,7 +97,7 @@ * Create NUMTHREADS threads in addition to the Main thread. */ enum { - NUMTHREADS = 1 + NUMTHREADS = 10 }; int caught = 0; @@ -125,12 +132,24 @@ terminateFunction () exit(0); } +void +wrongTerminateFunction () +{ + fputs("This is not the termination routine that should have been called!\n", stderr); + exit(1); +} + void * exceptionedThread(void * arg) { int dummy = 0x1; - (void) set_terminate(&terminateFunction); +#if defined(PTW32_USES_SEPARATE_CRT) && (defined(__CLEANUP_CXX) || defined(__CLEANUP_SEH)) + pthread_win32_set_terminate_np(&terminateFunction); + set_terminate(&wrongTerminateFunction); +#else + set_terminate(&terminateFunction); +#endif throw dummy; @@ -159,14 +178,12 @@ main() assert(pthread_create(&et[i], NULL, exceptionedThread, NULL) == 0); } - Sleep(NUMTHREADS * 100); - - assert(caught == NUMTHREADS); + Sleep(NUMTHREADS * 10); /* - * Success. + * Fail. Should never be reached. */ - return 0; + return 1; } #else /* defined(__cplusplus) */ diff --git a/pthreads/tests/exception3_0.c b/pthreads/tests/exception3_0.c new file mode 100755 index 000000000..bc06bf335 --- /dev/null +++ b/pthreads/tests/exception3_0.c @@ -0,0 +1,187 @@ +/* + * File: exception3.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test Synopsis: Test running of user supplied terminate() function. + * + * Test Method (Validation or Falsification): + * - + * + * Requirements Tested: + * - + * + * Features Tested: + * - + * + * Cases Tested: + * - + * + * Description: + * - + * + * Environment: + * - + * + * Input: + * - None. + * + * Output: + * - File name, Line number, and failed expression on failure. + * - No output on success. + * + * Assumptions: + * - have working pthread_create, pthread_self, pthread_mutex_lock/unlock + * pthread_testcancel, pthread_cancel + * + * Pass Criteria: + * - Process returns zero exit status. + * + * Fail Criteria: + * - Process returns non-zero exit status. + */ + +#include "test.h" + +/* + * Note: Due to a buggy C++ runtime in Visual Studio 2005, when we are + * built with /MD and an unhandled exception occurs, the runtime does not + * properly call the terminate handler specified by set_terminate(). + */ +#if defined(__cplusplus) \ + && !(defined(_MSC_VER) && _MSC_VER == 1400 && defined(_DLL) && !defined(_DEBUG)) + +#if defined(_MSC_VER) +# include +#else +# if defined(__GNUC__) && __GNUC__ < 3 +# include +# else +# include + using std::set_terminate; +# endif +#endif + +/* + * Create NUMTHREADS threads in addition to the Main thread. + */ +enum { + NUMTHREADS = 10 +}; + +int caught = 0; +CRITICAL_SECTION caughtLock; + +void +terminateFunction () +{ + EnterCriticalSection(&caughtLock); + caught++; +#if 0 + { + FILE * fp = fopen("pthread.log", "a"); + fprintf(fp, "Caught = %d\n", caught); + fclose(fp); + } +#endif + LeaveCriticalSection(&caughtLock); + + /* + * Notes from the MSVC++ manual: + * 1) A term_func() should call exit(), otherwise + * abort() will be called on return to the caller. + * abort() raises SIGABRT. The default signal handler + * for all signals terminates the calling program with + * exit code 3. + * 2) A term_func() must not throw an exception. Dev: Therefore + * term_func() should not call pthread_exit() if an + * exception-using version of pthreads-win32 library + * is being used (i.e. either pthreadVCE or pthreadVSE). + */ + exit(0); +} + +void * +exceptionedThread(void * arg) +{ + int dummy = 0x1; + + set_terminate(&terminateFunction); + assert(set_terminate(&terminateFunction) == &terminateFunction); + + throw dummy; + + return (void *) 2; +} + +int +main() +{ + int i; + DWORD et[NUMTHREADS]; + + InitializeCriticalSection(&caughtLock); + + for (i = 0; i < NUMTHREADS; i++) + { + CreateThread(NULL, //Choose default security + 0, //Default stack size + (LPTHREAD_START_ROUTINE)&exceptionedThread, //Routine to execute + NULL, //Thread parameter + 0, //Immediately run the thread + &et[i] //Thread Id + ); + } + + Sleep(NUMTHREADS * 10); + + DeleteCriticalSection(&caughtLock); + /* + * Fail. Should never be reached. + */ + return 1; +} + +#else /* defined(__cplusplus) */ + +#include + +int +main() +{ + fprintf(stderr, "Test N/A for this compiler environment.\n"); + return 0; +} + +#endif /* defined(__cplusplus) */ diff --git a/pthreads/tests/exit1.c b/pthreads/tests/exit1.c index 38f218211..352942452 100644 --- a/pthreads/tests/exit1.c +++ b/pthreads/tests/exit1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -45,6 +46,5 @@ main(int argc, char * argv[]) pthread_exit((void *) 0); /* Not reached */ - assert(0); - return 0; + return 1; } diff --git a/pthreads/tests/exit2.c b/pthreads/tests/exit2.c index b9f785edf..7438c865e 100644 --- a/pthreads/tests/exit2.c +++ b/pthreads/tests/exit2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/exit3.c b/pthreads/tests/exit3.c index 18859e4ee..6c01a0261 100644 --- a/pthreads/tests/exit3.c +++ b/pthreads/tests/exit3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/exit4.c b/pthreads/tests/exit4.c index 06dd8b1ee..e41383895 100644 --- a/pthreads/tests/exit4.c +++ b/pthreads/tests/exit4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -136,7 +137,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); diff --git a/pthreads/tests/exit5.c b/pthreads/tests/exit5.c index ac98f996c..c9ecf44e4 100644 --- a/pthreads/tests/exit5.c +++ b/pthreads/tests/exit5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -140,7 +141,7 @@ main() } /* - * Code to control or munipulate child threads should probably go here. + * Code to control or manipulate child threads should probably go here. */ Sleep(500); diff --git a/pthreads/tests/eyal1.c b/pthreads/tests/eyal1.c index 72b5697e9..5da95ff5d 100644 --- a/pthreads/tests/eyal1.c +++ b/pthreads/tests/eyal1.c @@ -5,10 +5,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -142,13 +143,10 @@ waste_time (int n) static int do_work_unit (int who, int n) { - int i; static int nchars = 0; double f = 0.0; - if (quiet) - i = 0; - else { + if (!quiet) { /* * get lock on stdout */ @@ -157,7 +155,7 @@ do_work_unit (int who, int n) /* * do our job */ - i = printf ("%c", "0123456789abcdefghijklmnopqrstuvwxyz"[who]); + (void) printf ("%c", "0123456789abcdefghijklmnopqrstuvwxyz"[who]); if (!(++nchars % 50)) printf ("\n"); diff --git a/pthreads/tests/inherit1.c b/pthreads/tests/inherit1.c index 24ceec557..d09cfc773 100644 --- a/pthreads/tests/inherit1.c +++ b/pthreads/tests/inherit1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/join0.c b/pthreads/tests/join0.c index d888e9d6b..f5c040eb5 100644 --- a/pthreads/tests/join0.c +++ b/pthreads/tests/join0.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/join1.c b/pthreads/tests/join1.c index 337af832d..a04127915 100644 --- a/pthreads/tests/join1.c +++ b/pthreads/tests/join1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/join2.c b/pthreads/tests/join2.c index b3b85ee81..8864f221a 100644 --- a/pthreads/tests/join2.c +++ b/pthreads/tests/join2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/join3.c b/pthreads/tests/join3.c index 44380ace3..35368667d 100644 --- a/pthreads/tests/join3.c +++ b/pthreads/tests/join3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/join4.c b/pthreads/tests/join4.c new file mode 100755 index 000000000..cbe96d29a --- /dev/null +++ b/pthreads/tests/join4.c @@ -0,0 +1,87 @@ +/* + * Test for pthread_timedjoin_np() timing out. + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Depends on API functions: pthread_create(). + */ + +#include "test.h" + +void * +func(void * arg) +{ + Sleep(1200); + return arg; +} + +int +main(int argc, char * argv[]) +{ + pthread_t id; + struct timespec abstime; + void* result = (void*)-1; + PTW32_STRUCT_TIMEB currSysTime; + const DWORD NANOSEC_PER_MILLISEC = 1000000; + + assert(pthread_create(&id, NULL, func, (void *)(size_t)999) == 0); + + /* + * Let thread start before we attempt to join it. + */ + Sleep(100); + + PTW32_FTIME(&currSysTime); + + abstime.tv_sec = (long)currSysTime.time; + abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm; + + /* Test for pthread_timedjoin_np timeout */ + abstime.tv_sec += 1; + assert(pthread_timedjoin_np(id, &result, &abstime) == ETIMEDOUT); + assert((int)(size_t)result == -1); + + /* Test for pthread_tryjoin_np behaviour before thread has exited */ + assert(pthread_tryjoin_np(id, &result) == EBUSY); + assert((int)(size_t)result == -1); + + Sleep(500); + + /* Test for pthread_tryjoin_np behaviour after thread has exited */ + assert(pthread_tryjoin_np(id, &result) == 0); + assert((int)(size_t)result == 999); + + /* Success. */ + return 0; +} diff --git a/pthreads/tests/kill1.c b/pthreads/tests/kill1.c index fd1eaee2b..84ca3c00b 100644 --- a/pthreads/tests/kill1.c +++ b/pthreads/tests/kill1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex1.c b/pthreads/tests/mutex1.c index 918c90330..6d9beaf83 100644 --- a/pthreads/tests/mutex1.c +++ b/pthreads/tests/mutex1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex1e.c b/pthreads/tests/mutex1e.c index d32adb3a1..9d0a32eca 100644 --- a/pthreads/tests/mutex1e.c +++ b/pthreads/tests/mutex1e.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex1n.c b/pthreads/tests/mutex1n.c index fcfc1347c..7e306cfa4 100644 --- a/pthreads/tests/mutex1n.c +++ b/pthreads/tests/mutex1n.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex1r.c b/pthreads/tests/mutex1r.c index 15083f27a..fb2de7eab 100644 --- a/pthreads/tests/mutex1r.c +++ b/pthreads/tests/mutex1r.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex2.c b/pthreads/tests/mutex2.c index 377468e90..8bd490f32 100644 --- a/pthreads/tests/mutex2.c +++ b/pthreads/tests/mutex2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex2e.c b/pthreads/tests/mutex2e.c index 7df6073d2..dd17ccd8c 100644 --- a/pthreads/tests/mutex2e.c +++ b/pthreads/tests/mutex2e.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex2r.c b/pthreads/tests/mutex2r.c index c96e366f1..740d60736 100644 --- a/pthreads/tests/mutex2r.c +++ b/pthreads/tests/mutex2r.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex3.c b/pthreads/tests/mutex3.c index bc1429e0b..94ca2daee 100644 --- a/pthreads/tests/mutex3.c +++ b/pthreads/tests/mutex3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex3e.c b/pthreads/tests/mutex3e.c index 66cfcb71c..40911fc89 100644 --- a/pthreads/tests/mutex3e.c +++ b/pthreads/tests/mutex3e.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex3r.c b/pthreads/tests/mutex3r.c index 8fa7f2547..891692b4d 100644 --- a/pthreads/tests/mutex3r.c +++ b/pthreads/tests/mutex3r.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex4.c b/pthreads/tests/mutex4.c index 6d36e0aa1..220c26011 100644 --- a/pthreads/tests/mutex4.c +++ b/pthreads/tests/mutex4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex5.c b/pthreads/tests/mutex5.c index a71f9d893..6d1237936 100644 --- a/pthreads/tests/mutex5.c +++ b/pthreads/tests/mutex5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/mutex6.c b/pthreads/tests/mutex6.c index 15649fc8d..79a896b8b 100644 --- a/pthreads/tests/mutex6.c +++ b/pthreads/tests/mutex6.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -86,8 +87,5 @@ main() assert(lockCount == 2); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex6e.c b/pthreads/tests/mutex6e.c index 908a51ba1..d6f695466 100644 --- a/pthreads/tests/mutex6e.c +++ b/pthreads/tests/mutex6e.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -101,9 +102,6 @@ main() assert(pthread_mutexattr_destroy(&mxAttr) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex6es.c b/pthreads/tests/mutex6es.c index d4b624959..6fa2424f0 100644 --- a/pthreads/tests/mutex6es.c +++ b/pthreads/tests/mutex6es.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -86,9 +87,6 @@ main() assert(pthread_mutex_destroy(&mutex) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex6n.c b/pthreads/tests/mutex6n.c index 9cb309c2c..cf3581169 100644 --- a/pthreads/tests/mutex6n.c +++ b/pthreads/tests/mutex6n.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -91,17 +92,14 @@ main() assert(lockCount == 1); - assert(pthread_mutex_unlock(&mutex) == IS_ROBUST?EPERM:0); + assert(pthread_mutex_unlock(&mutex) == (IS_ROBUST?EPERM:0)); Sleep (100); - assert(lockCount == IS_ROBUST?1:2); + assert(lockCount == (IS_ROBUST?1:2)); END_MUTEX_STALLED_ROBUST(mxAttr) - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex6r.c b/pthreads/tests/mutex6r.c index 9d81ad849..41fc6914b 100644 --- a/pthreads/tests/mutex6r.c +++ b/pthreads/tests/mutex6r.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -100,8 +101,5 @@ main() assert(pthread_mutexattr_destroy(&mxAttr) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex6rs.c b/pthreads/tests/mutex6rs.c index 4242fd627..d17566d7c 100644 --- a/pthreads/tests/mutex6rs.c +++ b/pthreads/tests/mutex6rs.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -85,8 +86,5 @@ main() assert(pthread_mutex_destroy(&mutex) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex6s.c b/pthreads/tests/mutex6s.c index 8b82dc3fa..2b13eba2f 100644 --- a/pthreads/tests/mutex6s.c +++ b/pthreads/tests/mutex6s.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -86,8 +87,5 @@ main() assert(lockCount == 2); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex7.c b/pthreads/tests/mutex7.c index 4137c351d..3110ca778 100644 --- a/pthreads/tests/mutex7.c +++ b/pthreads/tests/mutex7.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -75,8 +76,5 @@ main() assert(lockCount == 2); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex7e.c b/pthreads/tests/mutex7e.c index 80981b3e1..1fc1a15f4 100644 --- a/pthreads/tests/mutex7e.c +++ b/pthreads/tests/mutex7e.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -100,9 +101,6 @@ main() assert(pthread_mutexattr_destroy(&mxAttr) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex7n.c b/pthreads/tests/mutex7n.c index 87ba10a57..e8d280fb6 100644 --- a/pthreads/tests/mutex7n.c +++ b/pthreads/tests/mutex7n.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -92,9 +93,6 @@ main() assert(pthread_mutexattr_destroy(&mxAttr) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex7r.c b/pthreads/tests/mutex7r.c index 4e4ae8a9a..3e0ae135a 100644 --- a/pthreads/tests/mutex7r.c +++ b/pthreads/tests/mutex7r.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -100,8 +101,5 @@ main() assert(pthread_mutexattr_destroy(&mxAttr) == 0); - exit(0); - - /* Never reached */ return 0; } diff --git a/pthreads/tests/mutex8.c b/pthreads/tests/mutex8.c index f2636786c..35ce5629c 100644 --- a/pthreads/tests/mutex8.c +++ b/pthreads/tests/mutex8.c @@ -35,7 +35,6 @@ */ #include "test.h" -#include static int lockCount = 0; diff --git a/pthreads/tests/mutex8e.c b/pthreads/tests/mutex8e.c index a36056673..ec2838f7b 100644 --- a/pthreads/tests/mutex8e.c +++ b/pthreads/tests/mutex8e.c @@ -42,7 +42,6 @@ */ #include "test.h" -#include static int lockCount; diff --git a/pthreads/tests/mutex8n.c b/pthreads/tests/mutex8n.c index 0c6d97d7f..0fa290ce4 100644 --- a/pthreads/tests/mutex8n.c +++ b/pthreads/tests/mutex8n.c @@ -42,7 +42,6 @@ */ #include "test.h" -#include static int lockCount; diff --git a/pthreads/tests/mutex8r.c b/pthreads/tests/mutex8r.c index 434b9af8e..1b9f00f03 100644 --- a/pthreads/tests/mutex8r.c +++ b/pthreads/tests/mutex8r.c @@ -42,7 +42,6 @@ */ #include "test.h" -#include static int lockCount; diff --git a/pthreads/tests/once1.c b/pthreads/tests/once1.c index daec112d7..3a7f2e8cd 100644 --- a/pthreads/tests/once1.c +++ b/pthreads/tests/once1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/once2.c b/pthreads/tests/once2.c index 84e3f4bf6..ffd6bfe10 100644 --- a/pthreads/tests/once2.c +++ b/pthreads/tests/once2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -54,8 +55,8 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t numOnce = {0, {0}}; -static sharedInt_t numThreads = {0, {0}}; +static sharedInt_t numOnce; +static sharedInt_t numThreads; void myfunc(void) @@ -83,6 +84,9 @@ main() pthread_t t[NUM_THREADS][NUM_ONCE]; int i, j; + memset(&numOnce, 0, sizeof(sharedInt_t)); + memset(&numThreads, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&numThreads.cs); InitializeCriticalSection(&numOnce.cs); @@ -91,7 +95,11 @@ main() once[j] = o; for (i = 0; i < NUM_THREADS; i++) - assert(pthread_create(&t[i][j], NULL, mythread, (void *)(size_t)j) == 0); + { + /* GCC build: create was failing with EAGAIN after 790 threads */ + while (0 != pthread_create(&t[i][j], NULL, mythread, (void *)(size_t)j)) + sched_yield(); + } } for (j = 0; j < NUM_ONCE; j++) diff --git a/pthreads/tests/once3.c b/pthreads/tests/once3.c index ef1229043..6c7728607 100644 --- a/pthreads/tests/once3.c +++ b/pthreads/tests/once3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -60,8 +61,8 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t numOnce = {0, {0}}; -static sharedInt_t numThreads = {0, {0}}; +static sharedInt_t numOnce; +static sharedInt_t numThreads; void myfunc(void) @@ -72,7 +73,7 @@ myfunc(void) LeaveCriticalSection(&numOnce.cs); /* Simulate slow once routine so that following threads pile up behind it */ Sleep(10); - /* test for cancelation late so we're sure to have waiters. */ + /* Test for cancellation late so we're sure to have waiters. */ pthread_testcancel(); } @@ -81,12 +82,18 @@ mythread(void * arg) { /* * Cancel every thread. These threads are deferred cancelable only, so - * only the thread performing the once routine (my_func) will see it (there are - * no other cancelation points here). The result will be that every thread - * eventually cancels only when it becomes the new 'once' thread. + * this thread will see it only when it performs the once routine (my_func). + * The result will be that every thread eventually cancels only when it + * becomes the new 'once' thread. */ assert(pthread_cancel(pthread_self()) == 0); + /* + * Now we block on the 'once' control. + */ assert(pthread_once(&once[(int)(size_t)arg], myfunc) == 0); + /* + * We should never get to here. + */ EnterCriticalSection(&numThreads.cs); numThreads.i++; LeaveCriticalSection(&numThreads.cs); @@ -98,7 +105,16 @@ main() { pthread_t t[NUM_THREADS][NUM_ONCE]; int i, j; + +#if defined(PTW32_CONFIG_MSVC6) && defined(__CLEANUP_CXX) + puts("If this test fails or hangs, rebuild the library with /EHa instead of /EHs."); + puts("(This is a known issue with Microsoft VC++6.0.)"); + fflush(stdout); +#endif + memset(&numOnce, 0, sizeof(sharedInt_t)); + memset(&numThreads, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&numThreads.cs); InitializeCriticalSection(&numOnce.cs); @@ -108,7 +124,9 @@ main() for (i = 0; i < NUM_THREADS; i++) { - assert(pthread_create(&t[i][j], NULL, mythread, (void *)(size_t)j) == 0); + /* GCC build: create was failing with EAGAIN after 790 threads */ + while (0 != pthread_create(&t[i][j], NULL, mythread, (void *)(size_t)j)) + sched_yield(); } } diff --git a/pthreads/tests/once4.c b/pthreads/tests/once4.c index f5be64486..b708aae69 100644 --- a/pthreads/tests/once4.c +++ b/pthreads/tests/once4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -58,8 +59,8 @@ typedef struct { CRITICAL_SECTION cs; } sharedInt_t; -static sharedInt_t numOnce = {0, {0}}; -static sharedInt_t numThreads = {0, {0}}; +static sharedInt_t numOnce; +static sharedInt_t numThreads; typedef struct { int threadnum; @@ -94,7 +95,7 @@ myinitfunc(void) LeaveCriticalSection(&numOnce.cs); /* Simulate slow once routine so that following threads pile up behind it */ Sleep(10); - /* test for cancelation late so we're sure to have waiters. */ + /* test for cancellation late so we're sure to have waiters. */ pthread_testcancel(); } @@ -107,7 +108,7 @@ mythread(void * arg) /* * Cancel every thread. These threads are deferred cancelable only, so * only the thread performing the init_routine will see it (there are - * no other cancelation points here). The result will be that every thread + * no other cancellation points here). The result will be that every thread * eventually cancels only when it becomes the new initter. */ pthread_t self = pthread_self(); @@ -139,7 +140,16 @@ main() { pthread_t t[NUM_THREADS][NUM_ONCE]; int i, j; - + +#if defined(PTW32_CONFIG_MSVC6) && defined(__CLEANUP_CXX) + puts("If this test fails or hangs, rebuild the library with /EHa instead of /EHs."); + puts("(This is a known issue with Microsoft VC++6.0.)"); + fflush(stdout); +#endif + + memset(&numOnce, 0, sizeof(sharedInt_t)); + memset(&numThreads, 0, sizeof(sharedInt_t)); + InitializeCriticalSection(&print_lock); InitializeCriticalSection(&numThreads.cs); InitializeCriticalSection(&numOnce.cs); @@ -166,7 +176,9 @@ main() bag_t * bag = &threadbag[i][j]; bag->threadnum = i; bag->oncenum = j; - assert(pthread_create(&t[i][j], NULL, mythread, (void *) bag) == 0); + /* GCC build: create was failing with EAGAIN after 790 threads */ + while (0 != pthread_create(&t[i][j], NULL, mythread, (void *)bag)) + sched_yield(); } } diff --git a/pthreads/tests/openmp1.c b/pthreads/tests/openmp1.c index ee36e75c8..b5791e2ea 100644 --- a/pthreads/tests/openmp1.c +++ b/pthreads/tests/openmp1.c @@ -28,7 +28,7 @@ void *_thread(void* Id) { if (Verbose && i%1000==0) { int tid = omp_get_thread_num(); # pragma omp critical - printf("thread %d : tid %d handles %d\n",(int)Id,tid,i); + printf("thread %d : tid %d handles %d\n",(int)(size_t)Id,tid,i); } #endif @@ -43,9 +43,9 @@ void *_thread(void* Id) { #ifdef _OPENMP # pragma omp critical #endif - printf("Id %d : %s : %d(should be %d)\n",(int)Id, __FUNCTION__, Sum,ShouldSum); + printf("Id %d : %s : %d(should be %d)\n",(int)(size_t)Id, __FUNCTION__, Sum,ShouldSum); } - if (Sum == ShouldSum) ThreadOK[(int)Id] = 1; + if (Sum == ShouldSum) ThreadOK[(int)(size_t)Id] = 1; return NULL; } @@ -61,7 +61,7 @@ void MainThread() { int tid = omp_get_thread_num(); # pragma omp critical printf("Main : tid %d\n",tid); - _thread((void *)tid); + _thread((void *)(size_t)tid); #endif } return; diff --git a/pthreads/tests/priority1.c b/pthreads/tests/priority1.c index 40316cc64..d77420f88 100644 --- a/pthreads/tests/priority1.c +++ b/pthreads/tests/priority1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/priority2.c b/pthreads/tests/priority2.c index 7d4648f90..c4552e625 100644 --- a/pthreads/tests/priority2.c +++ b/pthreads/tests/priority2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/reuse1.c b/pthreads/tests/reuse1.c index 1a7dff0e0..bcf8571ca 100644 --- a/pthreads/tests/reuse1.c +++ b/pthreads/tests/reuse1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/reuse2.c b/pthreads/tests/reuse2.c index 362e547d9..93643b90e 100644 --- a/pthreads/tests/reuse2.c +++ b/pthreads/tests/reuse2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/robust1.c b/pthreads/tests/robust1.c index 100a8545b..4bb479ac7 100644 --- a/pthreads/tests/robust1.c +++ b/pthreads/tests/robust1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/robust2.c b/pthreads/tests/robust2.c index 2b3917a6e..795a17ffa 100644 --- a/pthreads/tests/robust2.c +++ b/pthreads/tests/robust2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/robust3.c b/pthreads/tests/robust3.c index cbf99df73..e9d05c7dd 100644 --- a/pthreads/tests/robust3.c +++ b/pthreads/tests/robust3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/robust4.c b/pthreads/tests/robust4.c index 136a183bd..35d5b84f8 100644 --- a/pthreads/tests/robust4.c +++ b/pthreads/tests/robust4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/robust5.c b/pthreads/tests/robust5.c index c67d12482..82e592e9b 100644 --- a/pthreads/tests/robust5.c +++ b/pthreads/tests/robust5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/runorder.mk b/pthreads/tests/runorder.mk new file mode 100755 index 000000000..8eba0e3da --- /dev/null +++ b/pthreads/tests/runorder.mk @@ -0,0 +1,149 @@ +# +# Common rules that define the run order of tests +# +benchtest1.bench: +benchtest2.bench: +benchtest3.bench: +benchtest4.bench: +benchtest5.bench: + +affinity1.pass: +affinity2.pass: affinity1.pass +affinity3.pass: affinity2.pass self1.pass create3.pass +affinity4.pass: affinity3.pass self1.pass create3.pass +affinity5.pass: affinity4.pass self1.pass create3.pass +barrier1.pass: semaphore4.pass +barrier2.pass: barrier1.pass semaphore4.pass +barrier3.pass: barrier2.pass semaphore4.pass self1.pass create3.pass join4.pass +barrier4.pass: barrier3.pass semaphore4.pass self1.pass create3.pass join4.pass mutex8.pass +barrier5.pass: barrier4.pass semaphore4.pass self1.pass create3.pass join4.pass mutex8.pass +barrier6.pass: barrier5.pass semaphore4.pass self1.pass create3.pass join4.pass mutex8.pass +cancel1.pass: self1.pass create3.pass +cancel2.pass: self1.pass create3.pass join4.pass barrier6.pass +cancel3.pass: self1.pass create3.pass join4.pass context1.pass +cancel4.pass: cancel3.pass self1.pass create3.pass join4.pass +cancel5.pass: cancel3.pass self1.pass create3.pass join4.pass +cancel6a.pass: cancel3.pass self1.pass create3.pass join4.pass +cancel6d.pass: cancel3.pass self1.pass create3.pass join4.pass +cancel7.pass: self1.pass create3.pass join4.pass kill1.pass +cancel8.pass: cancel7.pass self1.pass mutex8.pass kill1.pass +cancel9.pass: cancel8.pass self1.pass create3.pass join4.pass mutex8.pass kill1.pass +cleanup0.pass: self1.pass create3.pass join4.pass mutex8.pass cancel5.pass +cleanup1.pass: cleanup0.pass +cleanup2.pass: cleanup1.pass +cleanup3.pass: cleanup2.pass +condvar1.pass: self1.pass create3.pass semaphore1.pass mutex8.pass +condvar1_1.pass: condvar1.pass +condvar1_2.pass: join2.pass +condvar2.pass: condvar1.pass +condvar2_1.pass: condvar2.pass join2.pass +condvar3.pass: create1.pass condvar2.pass +condvar3_1.pass: condvar3.pass join2.pass +condvar3_2.pass: condvar3_1.pass +condvar3_3.pass: condvar3_2.pass +condvar4.pass: create1.pass +condvar5.pass: condvar4.pass +condvar6.pass: condvar5.pass +condvar7.pass: condvar6.pass cleanup1.pass +condvar8.pass: condvar7.pass +condvar9.pass: condvar8.pass +context1.pass: cancel1.pass +count1.pass: join1.pass +create1.pass: mutex2.pass +create2.pass: create1.pass +create3.pass: create2.pass +delay1.pass: self1.pass create3.pass +delay2.pass: delay1.pass +detach1.pass: join0.pass +equal1.pass: self1.pass create1.pass +errno1.pass: mutex3.pass +exception1.pass: cancel4.pass +exception2.pass: exception1.pass +exception3_0.pass: exception2.pass +exception3.pass: exception3_0.pass +exit1.pass: self1.pass create3.pass +exit2.pass: create1.pass +exit3.pass: create1.pass +exit4.pass: self1.pass create3.pass +exit5.pass: exit4.pass kill1.pass +eyal1.pass: self1.pass create3.pass mutex8.pass tsd1.pass +inherit1.pass: join1.pass priority1.pass +join0.pass: create1.pass +join1.pass: create1.pass +join2.pass: create1.pass +join3.pass: join2.pass +join4.pass: join3.pass +kill1.pass: self1.pass +mutex1.pass: mutex5.pass +mutex1n.pass: mutex1.pass +mutex1e.pass: mutex1.pass +mutex1r.pass: mutex1.pass +mutex2.pass: mutex1.pass +mutex2r.pass: mutex2.pass +mutex2e.pass: mutex2.pass +mutex3.pass: create1.pass +mutex3r.pass: mutex3.pass +mutex3e.pass: mutex3.pass +mutex4.pass: mutex3.pass +mutex5.pass: sizes.pass +mutex6.pass: mutex4.pass +mutex6n.pass: mutex4.pass +mutex6e.pass: mutex4.pass +mutex6r.pass: mutex4.pass +mutex6s.pass: mutex6.pass +mutex6rs.pass: mutex6r.pass +mutex6es.pass: mutex6e.pass +mutex7.pass: mutex6.pass +mutex7n.pass: mutex6n.pass +mutex7e.pass: mutex6e.pass +mutex7r.pass: mutex6r.pass +mutex8.pass: mutex7.pass +mutex8n.pass: mutex7n.pass +mutex8e.pass: mutex7e.pass +mutex8r.pass: mutex7r.pass +once1.pass: create1.pass +once2.pass: once1.pass +once3.pass: once2.pass +once4.pass: once3.pass +priority1.pass: join1.pass +priority2.pass: priority1.pass barrier3.pass +reuse1.pass: create3.pass +reuse2.pass: reuse1.pass +robust1.pass: mutex8r.pass +robust2.pass: mutex8r.pass +robust3.pass: robust2.pass +robust4.pass: robust3.pass +robust5.pass: robust4.pass +rwlock1.pass: condvar6.pass +rwlock2.pass: rwlock1.pass +rwlock3.pass: rwlock2.pass join2.pass +rwlock4.pass: rwlock3.pass +rwlock5.pass: rwlock4.pass +rwlock6.pass: rwlock5.pass +rwlock7.pass: rwlock6.pass +rwlock8.pass: rwlock7.pass +rwlock2_t.pass: rwlock2.pass +rwlock3_t.pass: rwlock2_t.pass +rwlock4_t.pass: rwlock3_t.pass +rwlock5_t.pass: rwlock4_t.pass +rwlock6_t.pass: rwlock5_t.pass +rwlock6_t2.pass: rwlock6_t.pass +self1.pass: sizes.pass +self2.pass: self1.pass equal1.pass create1.pass +semaphore1.pass: sizes.pass +semaphore2.pass: semaphore1.pass +semaphore3.pass: semaphore2.pass +semaphore4.pass: semaphore3.pass cancel1.pass +semaphore4t.pass: semaphore4.pass +semaphore5.pass: semaphore4.pass +sequence1.pass: reuse2.pass +sizes.pass: +spin1.pass: self1.pass create3.pass mutex8.pass +spin2.pass: spin1.pass +spin3.pass: spin2.pass +spin4.pass: spin3.pass +stress1.pass: create3.pass mutex8.pass barrier6.pass +tsd1.pass: barrier5.pass join1.pass +tsd2.pass: tsd1.pass +valid1.pass: join1.pass +valid2.pass: valid1.pass diff --git a/pthreads/tests/rwlock1.c b/pthreads/tests/rwlock1.c index 3d08ac993..e76e920ea 100644 --- a/pthreads/tests/rwlock1.c +++ b/pthreads/tests/rwlock1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock2.c b/pthreads/tests/rwlock2.c index 07518ebde..e9aff3248 100644 --- a/pthreads/tests/rwlock2.c +++ b/pthreads/tests/rwlock2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock2_t.c b/pthreads/tests/rwlock2_t.c index 4267ddbc8..b4767c7ff 100644 --- a/pthreads/tests/rwlock2_t.c +++ b/pthreads/tests/rwlock2_t.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock3.c b/pthreads/tests/rwlock3.c index d30f04088..08bda6e23 100644 --- a/pthreads/tests/rwlock3.c +++ b/pthreads/tests/rwlock3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock3_t.c b/pthreads/tests/rwlock3_t.c index 6419de13e..bedcedac2 100644 --- a/pthreads/tests/rwlock3_t.c +++ b/pthreads/tests/rwlock3_t.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock4.c b/pthreads/tests/rwlock4.c index a19a00132..b1ff7e0ef 100644 --- a/pthreads/tests/rwlock4.c +++ b/pthreads/tests/rwlock4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock4_t.c b/pthreads/tests/rwlock4_t.c index 58b3602fb..770dffbc0 100644 --- a/pthreads/tests/rwlock4_t.c +++ b/pthreads/tests/rwlock4_t.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock5.c b/pthreads/tests/rwlock5.c index 3b4054756..2d6e80ccd 100644 --- a/pthreads/tests/rwlock5.c +++ b/pthreads/tests/rwlock5.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock5_t.c b/pthreads/tests/rwlock5_t.c index 4a94658fb..8bba06b80 100644 --- a/pthreads/tests/rwlock5_t.c +++ b/pthreads/tests/rwlock5_t.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock6.c b/pthreads/tests/rwlock6.c index f667ce5ce..af523b44f 100644 --- a/pthreads/tests/rwlock6.c +++ b/pthreads/tests/rwlock6.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock6_t.c b/pthreads/tests/rwlock6_t.c index 71cbe220a..0616d7213 100644 --- a/pthreads/tests/rwlock6_t.c +++ b/pthreads/tests/rwlock6_t.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/rwlock6_t2.c b/pthreads/tests/rwlock6_t2.c index b8b0df9f2..c37b86631 100644 --- a/pthreads/tests/rwlock6_t2.c +++ b/pthreads/tests/rwlock6_t2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/self1.c b/pthreads/tests/self1.c index c0946f725..8893f6e63 100644 --- a/pthreads/tests/self1.c +++ b/pthreads/tests/self1.c @@ -1,69 +1,70 @@ -/* - * self1.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test for pthread_self(). - * - * Depends on API functions: - * pthread_self() - * - * Implicitly depends on: - * pthread_getspecific() - * pthread_setspecific() - */ - -#include "test.h" - -int -main(int argc, char * argv[]) -{ - /* - * This should always succeed unless the system has no - * resources (memory) left. - */ - pthread_t self; - -#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__)) - pthread_win32_process_attach_np(); -#endif - - self = pthread_self(); - - assert(self.p != NULL); - -#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__)) - pthread_win32_process_detach_np(); -#endif - return 0; -} +/* + * self1.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test for pthread_self(). + * + * Depends on API functions: + * pthread_self() + * + * Implicitly depends on: + * pthread_getspecific() + * pthread_setspecific() + */ + +#include "test.h" + +int +main(int argc, char * argv[]) +{ + /* + * This should always succeed unless the system has no + * resources (memory) left. + */ + pthread_t self; + +#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__)) + pthread_win32_process_attach_np(); +#endif + + self = pthread_self(); + + assert(self.p != NULL); + +#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__)) + pthread_win32_process_detach_np(); +#endif + return 0; +} diff --git a/pthreads/tests/self2.c b/pthreads/tests/self2.c index 28e57252e..3fff003da 100644 --- a/pthreads/tests/self2.c +++ b/pthreads/tests/self2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/semaphore1.c b/pthreads/tests/semaphore1.c index 8fc91ee02..938f0b59e 100644 --- a/pthreads/tests/semaphore1.c +++ b/pthreads/tests/semaphore1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -85,7 +86,12 @@ thr(void * arg) if ( result == -1 ) { - int err = errno; + int err = +#if defined(PTW32_USES_SEPARATE_CRT) + GetLastError(); +#else + errno; +#endif if (err != EAGAIN) { printf("thread: sem_trywait 1: expecting error %s: got %s\n", @@ -126,7 +132,12 @@ main() if (result2 == -1) { - int err = errno; + int err = +#if defined(PTW32_USES_SEPARATE_CRT) + GetLastError(); +#else + errno; +#endif if (err != EAGAIN) { printf("main: sem_trywait 1: expecting error %s: got %s\n", diff --git a/pthreads/tests/semaphore2.c b/pthreads/tests/semaphore2.c index af4d0ea70..de56cb310 100644 --- a/pthreads/tests/semaphore2.c +++ b/pthreads/tests/semaphore2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/semaphore3.c b/pthreads/tests/semaphore3.c index a0dfcb6f6..842313066 100644 --- a/pthreads/tests/semaphore3.c +++ b/pthreads/tests/semaphore3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -80,41 +81,43 @@ sem_t s; void * thr (void * arg) { - assert(sem_wait(&s) == 0); assert(pthread_detach(pthread_self()) == 0); + assert(sem_wait(&s) == 0); return NULL; } int main() { - int value = 0; - int i; - pthread_t t[MAX_COUNT+1]; + int value = 0; + int i; + pthread_t t[MAX_COUNT+1]; - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %d\n", value); fflush(stdout); - assert(value == 0); + assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); + assert(sem_getvalue(&s, &value) == 0); + //printf("Value = %d\n", value); fflush(stdout); + assert(value == 0); - for (i = 1; i <= MAX_COUNT; i++) - { - assert(pthread_create(&t[i], NULL, thr, NULL) == 0); - do { - sched_yield(); - assert(sem_getvalue(&s, &value) == 0); - } while (value != -i); -// printf("Value = %d\n", value); fflush(stdout); - assert(-value == i); - } + for (i = 1; i <= MAX_COUNT; i++) + { + assert(pthread_create(&t[i], NULL, thr, NULL) == 0); + do + { + sched_yield(); + assert(sem_getvalue(&s, &value) == 0); + } + while (value != -i); + //printf("1:Value = %d\n", value); fflush(stdout); + assert(-value == i); + } - for (i = MAX_COUNT - 1; i >= 0; i--) - { - assert(sem_post(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %d\n", value); fflush(stdout); - assert(-value == i); - } + for (i = MAX_COUNT - 1; i >= 0; i--) + { + assert(sem_post(&s) == 0); + assert(sem_getvalue(&s, &value) == 0); + //printf("2:Value = %d\n", value); fflush(stdout); + assert(-value == i); + } return 0; } diff --git a/pthreads/tests/semaphore4.c b/pthreads/tests/semaphore4.c index 3a28c7b50..eab1d8908 100644 --- a/pthreads/tests/semaphore4.c +++ b/pthreads/tests/semaphore4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/semaphore4t.c b/pthreads/tests/semaphore4t.c index 97bc7f88a..56044eca4 100644 --- a/pthreads/tests/semaphore4t.c +++ b/pthreads/tests/semaphore4t.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/semaphore5.c b/pthreads/tests/semaphore5.c index 812723433..3644b7343 100644 --- a/pthreads/tests/semaphore5.c +++ b/pthreads/tests/semaphore5.c @@ -1,103 +1,104 @@ -/* - * File: semaphore5.c - * - * - * -------------------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * -------------------------------------------------------------------------- - * - * Test Synopsis: Verify sem_destroy EBUSY race avoidance - * - - * - * Test Method (Validation or Falsification): - * - Validation - * - * Requirements Tested: - * - - * - * Features Tested: - * - - * - * Cases Tested: - * - - * - * Description: - * - - * - * Environment: - * - - * - * Input: - * - None. - * - * Output: - * - File name, Line number, and failed expression on failure. - * - No output on success. - * - * Assumptions: - * - - * - * Pass Criteria: - * - Process returns zero exit status. - * - * Fail Criteria: - * - Process returns non-zero exit status. - */ - -// #define ASSERT_TRACE - -#include "test.h" - -void * -thr(void * arg) -{ - assert(sem_post((sem_t *)arg) == 0); - - return 0; -} - - -int -main() -{ - pthread_t t; - sem_t s; - - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(pthread_create(&t, NULL, thr, (void *)&s) == 0); - - assert(sem_wait(&s) == 0); - assert(sem_destroy(&s) == 0); - - assert(pthread_join(t, NULL) == 0); - - return 0; -} - +/* + * File: semaphore5.c + * + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * -------------------------------------------------------------------------- + * + * Test Synopsis: Verify sem_destroy EBUSY race avoidance + * - + * + * Test Method (Validation or Falsification): + * - Validation + * + * Requirements Tested: + * - + * + * Features Tested: + * - + * + * Cases Tested: + * - + * + * Description: + * - + * + * Environment: + * - + * + * Input: + * - None. + * + * Output: + * - File name, Line number, and failed expression on failure. + * - No output on success. + * + * Assumptions: + * - + * + * Pass Criteria: + * - Process returns zero exit status. + * + * Fail Criteria: + * - Process returns non-zero exit status. + */ + +// #define ASSERT_TRACE + +#include "test.h" + +void * +thr(void * arg) +{ + assert(sem_post((sem_t *)arg) == 0); + + return 0; +} + + +int +main() +{ + pthread_t t; + sem_t s; + + assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); + assert(pthread_create(&t, NULL, thr, (void *)&s) == 0); + + assert(sem_wait(&s) == 0); + assert(sem_destroy(&s) == 0); + + assert(pthread_join(t, NULL) == 0); + + return 0; +} + diff --git a/pthreads/tests/sequence1.c b/pthreads/tests/sequence1.c index 46388eebd..51c3da7cb 100644 --- a/pthreads/tests/sequence1.c +++ b/pthreads/tests/sequence1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/spin1.c b/pthreads/tests/spin1.c index 00ecd11b1..82af2ca70 100644 --- a/pthreads/tests/spin1.c +++ b/pthreads/tests/spin1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/spin2.c b/pthreads/tests/spin2.c index b13c29c4e..267cd5c3a 100644 --- a/pthreads/tests/spin2.c +++ b/pthreads/tests/spin2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/spin3.c b/pthreads/tests/spin3.c index bbf8bfb22..e5a89cf57 100644 --- a/pthreads/tests/spin3.c +++ b/pthreads/tests/spin3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/spin4.c b/pthreads/tests/spin4.c index 3a4fd6f24..917104794 100644 --- a/pthreads/tests/spin4.c +++ b/pthreads/tests/spin4.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/stress1.c b/pthreads/tests/stress1.c index 7c787dcfb..3b55a660f 100644 --- a/pthreads/tests/stress1.c +++ b/pthreads/tests/stress1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/test.h b/pthreads/tests/test.h index 042e87b68..4b3cf591c 100644 --- a/pthreads/tests/test.h +++ b/pthreads/tests/test.h @@ -8,10 +8,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -44,6 +45,7 @@ #include #include +#include #define PTW32_THREAD_NULL_ID {NULL,0} @@ -53,19 +55,19 @@ #define rand_r( _seed ) \ ( _seed == _seed? rand() : rand() ) -#if defined(__MINGW32__) -#include +#if defined(PTW32_CONFIG_MINGW) +# include #elif defined(__BORLANDC__) -#define int64_t ULONGLONG +# define int64_t ULONGLONG #else -#define int64_t _int64 +# define int64_t _int64 #endif #if defined(_MSC_VER) && _MSC_VER >= 1400 # define PTW32_FTIME(x) _ftime64_s(x) # define PTW32_STRUCT_TIMEB struct __timeb64 #elif ( defined(_MSC_VER) && _MSC_VER >= 1300 ) || \ - ( defined(__MINGW32__) && __MSVCRT_VERSION__ >= 0x0601 ) + ( defined(PTW32_CONFIG_MINGW) && __MSVCRT_VERSION__ >= 0x0601 ) # define PTW32_FTIME(x) _ftime64(x) # define PTW32_STRUCT_TIMEB struct __timeb64 #else diff --git a/pthreads/tests/tryentercs.c b/pthreads/tests/tryentercs.c index 13a6e096d..f94e914eb 100644 --- a/pthreads/tests/tryentercs.c +++ b/pthreads/tests/tryentercs.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/tryentercs2.c b/pthreads/tests/tryentercs2.c index a1c4d97f3..2df8cd827 100644 --- a/pthreads/tests/tryentercs2.c +++ b/pthreads/tests/tryentercs2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/tsd1.c b/pthreads/tests/tsd1.c index 84d78886c..55c8aed80 100644 --- a/pthreads/tests/tsd1.c +++ b/pthreads/tests/tsd1.c @@ -8,10 +8,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/tsd2.c b/pthreads/tests/tsd2.c index 16e69948c..9f73c08c0 100644 --- a/pthreads/tests/tsd2.c +++ b/pthreads/tests/tsd2.c @@ -8,10 +8,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/valid1.c b/pthreads/tests/valid1.c index a3913fd04..132667952 100644 --- a/pthreads/tests/valid1.c +++ b/pthreads/tests/valid1.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the diff --git a/pthreads/tests/valid2.c b/pthreads/tests/valid2.c index b9671798b..5b04fa6b5 100644 --- a/pthreads/tests/valid2.c +++ b/pthreads/tests/valid2.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the -- cgit v1.2.3