summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Bmakefile10
-rw-r--r--tests/ChangeLog19
-rw-r--r--tests/GNUmakefile53
-rw-r--r--tests/Makefile50
-rwxr-xr-xtests/SIZES.GC13
-rwxr-xr-xtests/SIZES.GCE13
-rw-r--r--tests/Wmakefile7
-rw-r--r--tests/barrier5.c46
-rw-r--r--tests/once3.c11
-rw-r--r--tests/self1.c4
-rw-r--r--tests/stress1.c4
-rw-r--r--tests/test.h4
12 files changed, 165 insertions, 69 deletions
diff --git a/tests/Bmakefile b/tests/Bmakefile
index 9a2c2b4..169f42c 100644
--- a/tests/Bmakefile
+++ b/tests/Bmakefile
@@ -40,6 +40,7 @@ MKDIR = mkdir
TOUCH = echo Passed >
ECHO = @echo
+# The next path is relative to $BUILD_DIR
QAPC = ..\QueueUserAPCEx\User\quserex.dll
CPHDR = pthread.h semaphore.h sched.h
@@ -96,7 +97,7 @@ PASSES= loadfree.pass \
self2.pass \
cancel1.pass cancel2.pass \
semaphore4.pass semaphore4t.pass semaphore5.pass \
- barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.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 \
@@ -114,7 +115,8 @@ PASSES= loadfree.pass \
cancel9.pass create3.pass stress1.pass
BENCHRESULTS = \
- benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench
+ benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench \
+ benchtest6.bench
help:
@ $(ECHO) Run one of the following command lines:
@@ -191,7 +193,7 @@ BCX-bench:
@ $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $<
$(COPYFILES):
- @ $(ECHO) Copying $@
+ @ $(ECHO) Copying $(BUILD_DIR)\$@
@ $(CP) $(BUILD_DIR)\$@ .
pthread.dll: $(CPDLL)
@@ -221,11 +223,13 @@ benchtest2.bench:
benchtest3.bench:
benchtest4.bench:
benchtest5.bench:
+benchtest6.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
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 30f6ccb..1bdcc43 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,22 @@
+2010-06-19 Ross Johnson <Ross dot Johnson at homemail dot com dot au>
+
+ * Makefile (STATICRESULTS): Add all tests into suite for static
+ library.
+ * GNUmakefile (STATICTESTS): Likewise, except for openmp1.c which
+ has a DLL dependency.
+
+2010-02-04 Ross Johnson <Ross dot Johnson at homemail dot com dot au>
+
+ * openmp1.c: New; for libgomp compatibility (OpenMP).
+ * barrier5.c: Rewrite after changes to barriers.
+ * barrier6.c: New.
+ * benchtest6.c: New; timing barriers.
+ * GNUMakefile: Update for new tests.
+ * Makefile: Ditto.
+ * BMakefile: Ditto.
+ * once3.c: Improve cancelation testing.
+ * stress1.c: Fix comment.
+
2007-01-04 Ross Johnson <Ross dot Johnson at homemail dot com dot au>
* context1.c: Include context.h from library sources and remove
diff --git a/tests/GNUmakefile b/tests/GNUmakefile
index 1762b6c..c431f2f 100644
--- a/tests/GNUmakefile
+++ b/tests/GNUmakefile
@@ -44,15 +44,15 @@ CAT = cat
MKDIR = mkdir
TOUCH = echo Passed >
ECHO = @echo
-MAKE = make
+MAKE = make -k
#
# Mingw32
#
XXCFLAGS =
-XXLIBS = -lws2_32
+XXLIBS = -lws2_32 -lgomp
#CFLAGS = -O3 -UNDEBUG -Wall $(XXCFLAGS)
-CFLAGS = -g -UNDEBUG -Wall $(XXCFLAGS)
+CFLAGS = -O3 -fopenmp -UNDEBUG -Wall $(XXCFLAGS)
BUILD_DIR = ..
INCLUDES = -I.
@@ -67,6 +67,7 @@ GCX = $(TEST)$(DLL_VER)
HDR = pthread.h semaphore.h sched.h
LIB = libpthread$(GCX).a
DLL = pthread$(GCX).dll
+# The next path is relative to $BUILD_DIR
QAPC = ../QueueUserAPCEx/User/quserex.dll
COPYFILES = $(HDR) $(LIB) $(DLL) $(QAPC)
@@ -74,7 +75,8 @@ COPYFILES = $(HDR) $(LIB) $(DLL) $(QAPC)
# If a test case returns a non-zero exit code to the shell, make will
# stop.
-TESTS = sizes loadfree \
+TESTS = \
+ sizes loadfree \
self1 mutex5 mutex1 mutex1e mutex1n mutex1r \
semaphore1 semaphore2 semaphore3 \
condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 exit1 \
@@ -90,8 +92,8 @@ TESTS = sizes loadfree \
once1 once2 once3 once4 self2 \
cancel1 cancel2 \
semaphore4 semaphore4t semaphore5 \
- barrier1 barrier2 barrier3 barrier4 barrier5 \
- tsd1 tsd2 delay1 delay2 eyal1 \
+ 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 \
@@ -109,10 +111,39 @@ STRESSTESTS = \
stress1
BENCHTESTS = \
- benchtest1 benchtest2 benchtest3 benchtest4 benchtest5
+ benchtest1 benchtest2 benchtest3 benchtest4 benchtest5 benchtest6
STATICTESTS = \
- self1
+ sizes \
+ self1 mutex5 mutex1 mutex1e mutex1n mutex1r \
+ semaphore1 semaphore2 semaphore3 \
+ condvar1 condvar1_1 condvar1_2 condvar2 condvar2_1 exit1 \
+ create1 create2 reuse1 reuse2 equal1 \
+ 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 \
+ 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 create3 stress1
PASSES = $(TESTS:%=%.pass)
BENCHRESULTS = $(BENCHTESTS:%=%.bench)
@@ -184,12 +215,14 @@ benchtest2.bench:
benchtest3.bench:
benchtest4.bench:
benchtest5.bench:
+benchtest6.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
cancel2_1.pass: cancel2.pass
@@ -277,6 +310,7 @@ 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
@@ -345,7 +379,7 @@ sizes.pass: sizes.exe
@ $(CC) -S $(CFLAGS) -o $@ $< $(INCLUDES)
$(COPYFILES):
- @ $(ECHO) Copying $@
+ @ $(ECHO) Copying $(BUILD_DIR)/$@
@ $(CP) $(BUILD_DIR)/$@ .
benchlib.o: benchlib.c
@@ -366,6 +400,7 @@ clean:
- $(RM) *.e
- $(RM) *.i
- $(RM) *.o
+ - $(RM) *.so
- $(RM) *.obj
- $(RM) *.pdb
- $(RM) *.exe
diff --git a/tests/Makefile b/tests/Makefile
index 57fd2f4..c3342be 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -40,6 +40,7 @@ MKDIR = mkdir
TOUCH = echo Passed >
ECHO = @echo
+# The next path is relative to $BUILD_DIR
QAPC = ..\QueueUserAPCEx\User\quserex.dll
CPHDR = pthread.h semaphore.h sched.h
@@ -67,7 +68,7 @@ VCXFLAGS = /GX /TP /D__CLEANUP_C
CPLIB = $(VCLIB)
CPDLL = $(VCDLL)
-CFLAGS= $(OPTIM) /W3 /WX /MD /nologo /Zi
+CFLAGS= $(OPTIM) /W3 /WX /MD /nologo /Yd /Zi
LFLAGS= /INCREMENTAL:NO
INCLUDES=-I.
BUILD_DIR=..
@@ -100,7 +101,7 @@ PASSES= sizes.pass loadfree.pass \
self2.pass \
cancel1.pass cancel2.pass \
semaphore4.pass semaphore4t.pass semaphore5.pass \
- barrier1.pass barrier2.pass barrier3.pass barrier4.pass barrier5.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 \
@@ -119,13 +120,50 @@ PASSES= sizes.pass loadfree.pass \
cancel9.pass create3.pass stress1.pass
BENCHRESULTS = \
- benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench
+ benchtest1.bench benchtest2.bench benchtest3.bench benchtest4.bench benchtest5.bench \
+ benchtest6.bench
STRESSRESULTS = \
stress1.stress
STATICRESULTS = \
- self1.pass
+ 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 \
+ 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 \
+ 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 create3.pass stress1.pass
help:
@ $(ECHO) Run one of the following command lines:
@@ -245,7 +283,7 @@ VC-static:
@ $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $<
$(COPYFILES):
- @ $(ECHO) Copying $@
+ @ $(ECHO) Copying $(BUILD_DIR)\$@
@ $(CP) $(BUILD_DIR)\$@ .
pthread.dll: $(CPDLL)
@@ -274,12 +312,14 @@ benchtest2.bench:
benchtest3.bench:
benchtest4.bench:
benchtest5.bench:
+benchtest6.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
diff --git a/tests/SIZES.GC b/tests/SIZES.GC
index ae09a84..9252581 100755
--- a/tests/SIZES.GC
+++ b/tests/SIZES.GC
@@ -1,20 +1,21 @@
Sizes of pthreads-win32 structs
-------------------------------
- pthread_t_ 124
+ pthread_t 8
+ ptw32_thread_t 140
pthread_attr_t_ 28
- sem_t_ 4
- pthread_mutex_t_ 44
+ sem_t_ 12
+ pthread_mutex_t_ 24
pthread_mutexattr_t_ 8
pthread_spinlock_t_ 8
- pthread_barrier_t_ 24
+ 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_ 8
+ pthread_once_t_ 16
ptw32_cleanup_t 12
+ ptw32_mcs_node_t_ 16
sched_param 4
-------------------------------
-
diff --git a/tests/SIZES.GCE b/tests/SIZES.GCE
index f36d0d2..a9ea64d 100755
--- a/tests/SIZES.GCE
+++ b/tests/SIZES.GCE
@@ -1,20 +1,21 @@
Sizes of pthreads-win32 structs
-------------------------------
- pthread_t_ 60
+ pthread_t 8
+ ptw32_thread_t 76
pthread_attr_t_ 28
- sem_t_ 4
- pthread_mutex_t_ 44
+ sem_t_ 12
+ pthread_mutex_t_ 24
pthread_mutexattr_t_ 8
pthread_spinlock_t_ 8
- pthread_barrier_t_ 24
+ 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_ 8
+ pthread_once_t_ 16
ptw32_cleanup_t 12
+ ptw32_mcs_node_t_ 16
sched_param 4
-------------------------------
-
diff --git a/tests/Wmakefile b/tests/Wmakefile
index 83cd34b..a4b64a3 100644
--- a/tests/Wmakefile
+++ b/tests/Wmakefile
@@ -68,7 +68,10 @@ LFLAGS=
INCLUDES= -i=.
BUILD_DIR=..
-COPYFILES = $(CPHDR) $(CPLIB) $(CPDLL)
+# The next path is relative to $BUILD_DIR
+QAPC = ..\QueueUserAPCEx\User\quserex.dll
+
+COPYFILES = $(CPHDR) $(CPLIB) $(CPDLL) $(QAPC)
TEST =
EHFLAGS =
@@ -188,7 +191,7 @@ sizes.pass: sizes.exe
@ $(CC) /P $(EHFLAGS) $(CFLAGS) $(INCLUDES) $<
$(COPYFILES): .SYMBOLIC
- @ $(ECHO) Copying $@
+ @ $(ECHO) Copying $(BUILD_DIR)\$@
@ $(CP) $(BUILD_DIR)\$@ .
pthread.dll:
diff --git a/tests/barrier5.c b/tests/barrier5.c
index 5b598c9..851398c 100644
--- a/tests/barrier5.c
+++ b/tests/barrier5.c
@@ -33,47 +33,36 @@
*
* --------------------------------------------------------------------------
*
- * Declare a single barrier object, set up a sequence of
- * barrier points to prove lockstepness, and then destroy it.
- *
+ * Set up a series of barriers at different heights and test various numbers
+ * of threads accessing, especially cases where there are more threads than the
+ * barrier height (count), i.e. test contention when the barrier is released.
*/
#include "test.h"
enum {
- NUMTHREADS = 16,
- BARRIERS = 10000
+ NUMTHREADS = 15,
+ HEIGHT = 10,
+ BARRIERMULTIPLE = 1000
};
pthread_barrier_t barrier = NULL;
pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER;
-
-int barrierReleases[BARRIERS + 1];
+LONG totalThreadCrossings;
void *
-func(void * barrierHeight)
+func(void * crossings)
{
- int i;
int result;
int serialThreads = 0;
- for (i = 1; i < BARRIERS; i++)
+ while ((LONG)crossings >= (LONG)InterlockedIncrement((LPLONG)&totalThreadCrossings))
{
result = pthread_barrier_wait(&barrier);
- assert(pthread_mutex_lock(&mx) == 0);
- barrierReleases[i]++;
- assert(pthread_mutex_unlock(&mx) == 0);
- /*
- * Confirm the correct number of releases from the previous
- * barrier. We can't do the current barrier yet because there may
- * still be threads waking up.
- */
if (result == PTHREAD_BARRIER_SERIAL_THREAD)
{
serialThreads++;
- assert(barrierReleases[i - 1] == (int) barrierHeight);
- barrierReleases[i + 1] = 0;
}
else if (result != 0)
{
@@ -92,20 +81,23 @@ main()
int i, j;
int result;
int serialThreadsTotal;
+ LONG Crossings;
pthread_t t[NUMTHREADS + 1];
for (j = 1; j <= NUMTHREADS; j++)
{
- printf("Barrier height = %d\n", j);
+ int height = j<HEIGHT?j:HEIGHT;
+
+ totalThreadCrossings = 0;
+ Crossings = height * BARRIERMULTIPLE;
- barrierReleases[0] = j;
- barrierReleases[1] = 0;
+ printf("Threads=%d, Barrier height=%d\n", j, height);
- assert(pthread_barrier_init(&barrier, NULL, j) == 0);
+ assert(pthread_barrier_init(&barrier, NULL, height) == 0);
for (i = 1; i <= j; i++)
{
- assert(pthread_create(&t[i], NULL, func, (void *) j) == 0);
+ assert(pthread_create(&t[i], NULL, func, (void *) Crossings) == 0);
}
serialThreadsTotal = 0;
@@ -115,9 +107,7 @@ main()
serialThreadsTotal += result;
}
- assert(serialThreadsTotal == BARRIERS - 1);
- assert(barrierReleases[BARRIERS - 1] == j);
- assert(barrierReleases[BARRIERS] == 0);
+ assert(serialThreadsTotal == BARRIERMULTIPLE);
assert(pthread_barrier_destroy(&barrier) == 0);
}
diff --git a/tests/once3.c b/tests/once3.c
index 51d2daa..c706f80 100644
--- a/tests/once3.c
+++ b/tests/once3.c
@@ -34,7 +34,7 @@
* --------------------------------------------------------------------------
*
* Create several pthread_once objects and channel several threads
- * through each. Make the init_routine cancelable and cancel them
+ * through each. Make the init_routine cancelable and cancel them with
* waiters waiting.
*
* Depends on API functions:
@@ -45,6 +45,8 @@
* pthread_once()
*/
+/* #define ASSERT_TRACE */
+
#include "test.h"
#define NUM_THREADS 100 /* Targeting each once control */
@@ -66,6 +68,7 @@ myfunc(void)
{
EnterCriticalSection(&numOnce.cs);
numOnce.i++;
+ assert(numOnce.i > 0);
LeaveCriticalSection(&numOnce.cs);
/* Simulate slow once routine so that following threads pile up behind it */
Sleep(10);
@@ -78,11 +81,11 @@ 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
+ * 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 initter.
+ * eventually cancels only when it becomes the new once thread.
*/
- pthread_cancel(pthread_self());
+ assert(pthread_cancel(pthread_self()) == 0);
assert(pthread_once(&once[(int) arg], myfunc) == 0);
EnterCriticalSection(&numThreads.cs);
numThreads.i++;
diff --git a/tests/self1.c b/tests/self1.c
index 59498d9..aa08328 100644
--- a/tests/self1.c
+++ b/tests/self1.c
@@ -54,7 +54,7 @@ main(int argc, char * argv[])
*/
pthread_t self;
-#ifdef PTW32_STATIC_LIB
+#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__))
pthread_win32_process_attach_np();
#endif
@@ -62,7 +62,7 @@ main(int argc, char * argv[])
assert(self.p != NULL);
-#ifdef PTW32_STATIC_LIB
+#if defined(PTW32_STATIC_LIB) && !(defined(_MSC_VER) || defined(__MINGW32__))
pthread_win32_process_detach_np();
#endif
return 0;
diff --git a/tests/stress1.c b/tests/stress1.c
index efaf445..3588361 100644
--- a/tests/stress1.c
+++ b/tests/stress1.c
@@ -54,7 +54,7 @@
* - Master and slave do battle continuously until main tells them to stop.
* - Afterwards, the CV must be successfully destroyed (will return an
* error if there are waiters (including any internal semaphore waiters,
- * which, if there are, cannot not be real waiters).
+ * which, if there are, cannot be real waiters).
*
* Environment:
* -
@@ -97,7 +97,7 @@ static int timeoutCount = 0;
static int signalsTakenCount = 0;
static int signalsSent = 0;
static int bias = 0;
-static int timeout = 10; // Must be > 0
+static int timeout = 10; // Must be > 0
enum {
CTL_STOP = -1
diff --git a/tests/test.h b/tests/test.h
index 3132c69..56fa335 100644
--- a/tests/test.h
+++ b/tests/test.h
@@ -56,7 +56,7 @@
#endif
-char * error_string[] = {
+const char * error_string[] = {
"ZERO_or_EOK",
"EPERM",
"ENOFILE_or_ENOENT",
@@ -99,7 +99,7 @@ char * error_string[] = {
"ENOLCK",
"ENOSYS",
"ENOTEMPTY",
- "EILSEQ",
+ "EILSEQ"
};
/*