* Versions (libpthread: GLIBC_2.2): Remove
authorRoland McGrath <roland@gnu.org>
Wed, 19 Mar 2003 03:34:48 +0000 (03:34 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 19 Mar 2003 03:34:48 +0000 (03:34 +0000)
pthread_barrierattr_getpshared, never really existed.
(libpthread: GLIBC_2.0): Move __pthread_initialize to ...
(libpthread: GLIBC_PRIVATE): ... here.

linuxthreads/ChangeLog
linuxthreads/Versions
nptl/ChangeLog
nptl/sysdeps/pthread/pthread_cond_timedwait.c
nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h

index 862c96e..ecd57bf 100644 (file)
@@ -1,3 +1,10 @@
+2003-03-18  Roland McGrath  <roland@redhat.com>
+
+       * Versions (libpthread: GLIBC_2.2): Remove
+       pthread_barrierattr_getpshared, never really existed.
+       (libpthread: GLIBC_2.0): Move __pthread_initialize to ...
+       (libpthread: GLIBC_PRIVATE): ... here.
+
 2003-03-14  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file.
index 0facfbc..88668e6 100644 (file)
@@ -80,7 +80,7 @@ libpthread {
     sigwait;
 
     # Protected names for functions used in other shared objects.
-    __pthread_atfork; __pthread_initialize; __pthread_getspecific;
+    __pthread_atfork; __pthread_getspecific;
     __pthread_key_create; __pthread_mutex_destroy; __pthread_mutex_init;
     __pthread_mutex_lock; __pthread_mutex_trylock; __pthread_mutex_unlock;
     __pthread_mutexattr_destroy; __pthread_mutexattr_init;
@@ -147,7 +147,7 @@ libpthread {
     pthread_getcpuclockid;
     pthread_barrier_destroy; pthread_barrier_init; pthread_barrier_wait;
     pthread_barrierattr_destroy; pthread_barrierattr_init;
-    pthread_barrierattr_getpshared; pthread_barrierattr_setpshared;
+    pthread_barrierattr_setpshared;
     pthread_mutex_timedlock;
     pthread_rwlock_timedrdlock; pthread_rwlock_timedwrlock;
 
@@ -170,6 +170,7 @@ libpthread {
   }
   GLIBC_PRIVATE {
     # Internal libc interface to libpthread
+    __pthread_initialize;
     __pthread_kill_other_threads_np;
   }
 }
index 0150cad..3c9693a 100644 (file)
@@ -1,3 +1,16 @@
+2003-03-18  Roland McGrath  <roland@redhat.com>
+
+       * Versions (libpthread: GLIBC_2.3.2): Move pthread_tryjoin_np and
+       pthread_timedjoin_np to ...
+       (libpthread: GLIBC_2.3.3): ... here.
+       (libpthread: GLIBC_2.2): Move pthread_barrierattr_getpshared there too.
+
+       * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
+       Avoid shadowing VAL variable.
+
+       * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
+       New macro.
+
 2003-03-18  Ulrich Drepper  <drepper@redhat.com>
 
        * Makefile (tests): Add tst-cond11.
index e0200b4..23cf0ac 100644 (file)
@@ -93,36 +93,38 @@ __pthread_cond_timedwait (cond, mutex, abstime)
   while (1)
     {
       struct timespec rt;
+      {
 #ifdef __NR_clock_gettime
-      INTERNAL_SYSCALL_DECL (err);
-      int val = INTERNAL_SYSCALL (clock_gettime, err, 2, cond->__data.__clock,
-                                 &ts);
+       INTERNAL_SYSCALL_DECL (err);
+       int val = INTERNAL_SYSCALL (clock_gettime, err, 2,
+                                   cond->__data.__clock, &rt);
 # ifndef __ASSUME_POSIX_TIMERS
-      if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (val, err), 0))
-       {
-         struct timeval tv;
-         (void) gettimeofday (&tv, NULL);
-
-         /* Convert the absolute timeout value to a relative timeout.  */
-         rt.tv_sec = abstime->tv_sec - tv.tv_sec;
-         rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
-       }
-      else
+       if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (val, err), 0))
+         {
+           struct timeval tv;
+           (void) gettimeofday (&tv, NULL);
+
+           /* Convert the absolute timeout value to a relative timeout.  */
+           rt.tv_sec = abstime->tv_sec - tv.tv_sec;
+           rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+         }
+       else
 # endif
-       {
-         /* Convert the absolute timeout value to a relative timeout.  */
-         rt.tv_sec = abstime->tv_sec - rt.tv_sec;
-         rt.tv_nsec = abstime->tv_nsec - rt.tv_nsec;
-       }
+         {
+           /* Convert the absolute timeout value to a relative timeout.  */
+           rt.tv_sec = abstime->tv_sec - rt.tv_sec;
+           rt.tv_nsec = abstime->tv_nsec - rt.tv_nsec;
+         }
 #else
-      /* Get the current time.  So far we support only one clock.  */
-      struct timeval tv;
-      (void) gettimeofday (&tv, NULL);
+       /* Get the current time.  So far we support only one clock.  */
+       struct timeval tv;
+       (void) gettimeofday (&tv, NULL);
 
-      /* Convert the absolute timeout value to a relative timeout.  */
-      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
-      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+       /* Convert the absolute timeout value to a relative timeout.  */
+       rt.tv_sec = abstime->tv_sec - tv.tv_sec;
+       rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
 #endif
+      }
       if (rt.tv_nsec < 0)
        {
          rt.tv_nsec += 1000000000;
index bfd109f..2b58d2e 100644 (file)
      __val;                                                                  \
   })
 
+/* Atomically store newval and return the old value.  */
+#define __lll_test_and_set(futex, newval)                                    \
+  ({ int __val;                                                                      \
+      __asm __volatile ("1:    lwarx   %0,0,%3\n"                            \
+                       "       stwcx.  %2,0,%3\n"                            \
+                       "       bne-    1b"                                   \
+                       : "=&r" (__val), "=m" (*futex)                        \
+                       : "r" (futex), "r" (newval), "1" (*futex)             \
+                       : "cr0");                                             \
+      __val; })
+
+
 extern void __lll_lock_wait (int *futex, int val) attribute_hidden;
 
 #define lll_mutex_lock(lock) \