Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 30 May 2003 16:36:18 +0000 (16:36 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 30 May 2003 16:36:18 +0000 (16:36 +0000)
2003-05-30  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/unix/sysv/linux/ia64/lowlevellock.h
(__lll_mutex_cond_lock): Add one to value parameter of
__lll_lock_wait to reflect reality in the futex syscall.
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
(lll_mutex_cond_lock): Likewise.

nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h

index e4c7a55..44c6ca9 100644 (file)
@@ -1,3 +1,11 @@
+2003-05-30  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
+       (__lll_mutex_cond_lock): Add one to value parameter of
+       __lll_lock_wait to reflect reality in the futex syscall.
+       * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+       (lll_mutex_cond_lock): Likewise.
+
 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_cond_lock):
index 525869b..b7f018b 100644 (file)
@@ -142,7 +142,10 @@ __lll_mutex_cond_lock (int *futex)
   int val = atomic_exchange_and_add (futex, 2);
 
   if (__builtin_expect (val != 0, 0))
-    __lll_lock_wait (futex, val);
+    /* Note, the val + 1 is kind of ugly here.  __lll_lock_wait will add
+       1 again.  But we added 2 to the futex value so this is the right
+       value which will be passed to the kernel.  */
+    __lll_lock_wait (futex, val + 1);
 }
 #define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex))