summaryrefslogtreecommitdiff
path: root/tests/barrier3.c
diff options
context:
space:
mode:
authorrpj <rpj>2001-07-06 18:16:50 +0000
committerrpj <rpj>2001-07-06 18:16:50 +0000
commit06974b302eaf8f08382e6e786aea53f420c12222 (patch)
tree1b574a41dacc634a105a74127b2dac30a60bda13 /tests/barrier3.c
parent7a3104dc65b469cbb9c88b6a9c7b7bea4126a43e (diff)
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.
Diffstat (limited to 'tests/barrier3.c')
-rw-r--r--tests/barrier3.c19
1 files changed, 9 insertions, 10 deletions
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;
}