Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 11 Dec 2003 09:39:06 +0000 (09:39 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 11 Dec 2003 09:39:06 +0000 (09:39 +0000)
2003-12-11  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
Assume parameter is a pointer.
(lll_futex_wake): Likewise.
Reported by Boris Hu.
* sysdeps/unix/sysv/linux/unregister-atfork.c
(__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.

* sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.

nptl/ChangeLog
nptl/perf.c
nptl/sysdeps/unix/sysv/linux/sem_wait.c
nptl/sysdeps/unix/sysv/linux/unregister-atfork.c

index 441f0ba..90e321a 100644 (file)
@@ -1,3 +1,14 @@
+2003-12-11  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
+       Assume parameter is a pointer.
+       (lll_futex_wake): Likewise.
+       Reported by Boris Hu.
+       * sysdeps/unix/sysv/linux/unregister-atfork.c
+       (__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.
+
+       * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
+
 2003-12-10  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
index 515f493..5b920d7 100644 (file)
@@ -304,7 +304,7 @@ start_threads (void *arg)
        }
 
       err = pthread_create (&ths[i], &attr, work,
-                           (void *) (rand_r (&state) + starts + i));
+                           (void *) (long) (rand_r (&state) + starts + i));
 
       if (err != 0)
        error (EXIT_FAILURE, err, "cannot start thread");
@@ -703,7 +703,13 @@ clock_getcpuclockid (pid_t pid, clockid_t *clock_id)
 }
 
 
+#ifdef i386
 #define HP_TIMING_NOW(Var)     __asm__ __volatile__ ("rdtsc" : "=A" (Var))
+#elif defined __ia64__
+#define HP_TIMING_NOW(Var)     __asm__ __volatile__ ("mov %0=ar.itc" : "=r" (Var) : : "memory")
+#else
+#error "HP_TIMING_NOW missing"
+#endif
 
 /* Get current value of CLOCK and store it in TP.  */
 int
index 36bb158..e6733e8 100644 (file)
@@ -35,17 +35,12 @@ __new_sem_wait (sem_t *sem)
   CANCELLATION_P (THREAD_SELF);
 
   int *futex = (int *) sem;
-  int val;
   int err;
 
   do
     {
-      if (*futex > 0)
-       {
-         val = atomic_decrement_if_positive (futex);
-         if (val > 0)
-           return 0;
-       }
+      if (atomic_decrement_if_positive (futex) > 0)
+       return 0;
 
       /* Enable asynchronous cancellation.  Required by the standard.  */
       int oldtype = __pthread_enable_asynccancel ();
index ac4b3c5..72c8d61 100644 (file)
@@ -104,7 +104,7 @@ __unregister_atfork (dso_handle)
       atomic_decrement (&deleted->handler->refcntr);
       unsigned int val;
       while ((val = deleted->handler->refcntr) != 0)
-       lll_futex_wait (deleted->handler->refcntr, val);
+       lll_futex_wait (&deleted->handler->refcntr, val);
 
       deleted = deleted->next;
     }