Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 25 Feb 2003 02:46:33 +0000 (02:46 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 25 Feb 2003 02:46:33 +0000 (02:46 +0000)
2003-02-24  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remove EACCES
test.

ChangeLog
nptl/ChangeLog
nptl/tst-cond2.c
sysdeps/unix/sysv/linux/ttyname_r.c

index 99c0986..8f6f28d 100644 (file)
--- 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.
index 8d8ff4a..05aee28 100644 (file)
@@ -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.
index 2610a6a..21bf817 100644 (file)
@@ -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");
index 924b491..eee4d86 100644 (file)
@@ -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))
     {