diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | nptl/ChangeLog | 2 | ||||
-rw-r--r-- | nptl/tst-cond2.c | 37 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ttyname_r.c | 2 |
4 files changed, 28 insertions, 18 deletions
@@ -1,3 +1,8 @@ +2003-02-24 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remove EACCES + test. + 2003-02-24 Roland McGrath <roland@redhat.com> * sysdeps/posix/pause.c: Add LIBC_CANCEL_HANDLED. 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 <drepper@redhat.com> + * 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"); diff --git a/sysdeps/unix/sysv/linux/ttyname_r.c b/sysdeps/unix/sysv/linux/ttyname_r.c index 924b491e06..eee4d862b2 100644 --- a/sysdeps/unix/sysv/linux/ttyname_r.c +++ b/sysdeps/unix/sysv/linux/ttyname_r.c @@ -124,8 +124,6 @@ __ttyname_r (int fd, char *buf, size_t buflen) __set_errno (EBADF); return EBADF; } - if (ret == -1 && errno == EACCES) - return EACCES; if (!__isatty (fd)) { |