aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--nptl/ChangeLog2
-rw-r--r--nptl/tst-cond2.c37
-rw-r--r--sysdeps/unix/sysv/linux/ttyname_r.c2
4 files changed, 28 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 99c0986f99..8f6f28d26f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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))
{