From 80d807799f5d0cadb9d7e28788b51e6930fb286c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 25 Feb 2003 02:46:33 +0000 Subject: Update. 2003-02-24 Ulrich Drepper * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remove EACCES test. --- nptl/ChangeLog | 2 ++ nptl/tst-cond2.c | 37 +++++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 16 deletions(-) (limited to 'nptl') diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 8d8ff4acf9..05aee28cb5 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,7 @@ 2003-02-24 Ulrich Drepper + * tst-cond2.c: Fix sychronization with child. + * tst-rwlock8.c (reader_thread): Remove unused variable. * Makefile: Add rules to build and run tst-tls3. diff --git a/nptl/tst-cond2.c b/nptl/tst-cond2.c index 2610a6ad8c..21bf817b13 100644 --- a/nptl/tst-cond2.c +++ b/nptl/tst-cond2.c @@ -26,7 +26,7 @@ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t syncm = PTHREAD_MUTEX_INITIALIZER; +static pthread_barrier_t bar; static void * @@ -41,11 +41,14 @@ tf (void *a) if (err != 0) error (EXIT_FAILURE, err, "locking in child failed"); - printf ("child %d: unlock sync\n", i); + printf ("child %d: sync\n", i); - err = pthread_mutex_unlock (&syncm); - if (err != 0) - error (EXIT_FAILURE, err, "child %d: unlock[1] failed", i); + int e = pthread_barrier_wait (&bar); + if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) + { + puts ("child: barrier_wait failed"); + exit (1); + } printf ("child %d: wait\n", i); @@ -77,11 +80,11 @@ do_test (void) printf ("&cond = %p\n&mut = %p\n", &cond, &mut); - puts ("first lock"); - - err = pthread_mutex_lock (&syncm); - if (err != 0) - error (EXIT_FAILURE, err, "initial locking failed"); + if (pthread_barrier_init (&bar, NULL, 2) != 0) + { + puts ("barrier_init failed"); + exit (1); + } for (i = 0; i < N; ++i) { @@ -93,12 +96,14 @@ do_test (void) printf ("wait for child %d\n", i); - /* Lock and thereby wait for the child to start up and get the - mutex for the conditional variable. */ - pthread_mutex_lock (&syncm); - /* Unlock right away. Yes, we can use barriers but then we - would test more functionality here. */ - pthread_mutex_unlock (&syncm); + /* Wait for the child to start up and get the mutex for the + conditional variable. */ + int e = pthread_barrier_wait (&bar); + if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) + { + puts ("barrier_wait failed"); + exit (1); + } } puts ("get lock outselves"); -- cgit 1.4.1