From 06974b302eaf8f08382e6e786aea53f420c12222 Mon Sep 17 00:00:00 2001 From: rpj Date: Fri, 6 Jul 2001 18:16:50 +0000 Subject: Spinlocks and barriers fixed and working. Beta level. * spin.c: Revamped and working; included static initialiser. * barrier.c: Likewise. * condvar.c: Macro constant change; inline auto init routine. * mutex.c: Likewise. * rwlock.c: Likewise. * private.c: Add support for spinlock initialiser. * global.c: Likewise. * implement.h: Likewise. * pthread.h (PTHREAD_SPINLOCK_INITIALIZER): Fix typo. tests/ChangeLog: * spin3.c: Changed test and fixed. * spin4.c: Fixed. * barrier3.c: Fixed. * barrier4.c: Fixed. --- tests/barrier3.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'tests/barrier3.c') diff --git a/tests/barrier3.c b/tests/barrier3.c index 497b76a..97f6dc2 100644 --- a/tests/barrier3.c +++ b/tests/barrier3.c @@ -1,7 +1,7 @@ /* * barrier3.c * - * Declare a single barrier object, multiple wait on it, + * Declare a single barrier object with barrier attribute, wait on it, * and then destroy it. * */ @@ -9,8 +9,7 @@ #include "test.h" pthread_barrier_t barrier = NULL; -static int result1 = -1; -static int result2 = -1; +static int result = 1; void * func(void * arg) { @@ -21,20 +20,20 @@ int main() { pthread_t t; + pthread_barrierattr_t ba; - assert(pthread_barrier_init(&barrier, NULL, 2) == 0); + assert(pthread_barrierattr_init(&ba) == 0); + assert(pthread_barrierattr_setpshared(&ba, PTHREAD_PROCESS_PRIVATE) == 0); + assert(pthread_barrier_init(&barrier, &ba, 1) == 0); assert(pthread_create(&t, NULL, func, NULL) == 0); - result1 = pthread_barrier_wait(&barrier); + assert(pthread_join(t, (void *) &result) == 0); - assert(pthread_join(t, &result2) == 0); - - assert(result1 != result2); - assert(result1 == 0 || result1 == PTHREAD_BARRIER_SERIAL_THREAD); - assert(result2 == 0 || result2 == PTHREAD_BARRIER_SERIAL_THREAD); + assert(result == PTHREAD_BARRIER_SERIAL_THREAD); assert(pthread_barrier_destroy(&barrier) == 0); + assert(pthread_barrierattr_destroy(&ba) == 0); return 0; } -- cgit v1.2.3