diff options
author | Jakub Jelinek <jakub@redhat.com> | 2006-03-02 09:06:20 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2006-03-02 09:06:20 +0000 |
commit | 4a22fa60cd42eba5ab1931547be33f7764ef6f73 (patch) | |
tree | bf57a7c7809c17153a9d680ebf8c6e4dd553cd64 /nptl | |
parent | a07552b6e042c28f925c6df06a1849f734975ea2 (diff) | |
download | glibc-4a22fa60cd42eba5ab1931547be33f7764ef6f73.tar glibc-4a22fa60cd42eba5ab1931547be33f7764ef6f73.tar.gz glibc-4a22fa60cd42eba5ab1931547be33f7764ef6f73.tar.bz2 glibc-4a22fa60cd42eba5ab1931547be33f7764ef6f73.zip |
Updated to fedora-glibc-20060302T0855
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 13 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S | 2 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c | 6 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S | 2 |
4 files changed, 21 insertions, 2 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 3eb1482f8c..b35cfddcac 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,16 @@ +2006-03-01 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S + (__lll_robust_lock_wait): Also set FUTEX_WAITERS bit if we got the + mutex. + (__lll_robust_timedlock_wait): Likewise. + * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S + (__lll_robust_lock_wait): Likewise. + (__lll_robust_timedlock_wait): Likewise. + * sysdeps/unix/sysv/linux/lowlevelrobustlock.c + (__lll_robust_lock_wait): Likewise. + (__lll_robust_timedlock_wait): Likewise. + 2006-03-01 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_robust_mutex_dead, diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S index 1c516c7424..ff09745060 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S @@ -74,6 +74,7 @@ __lll_robust_mutex_lock_wait: jne 4b movl %gs:TID, %edx + orl $FUTEX_WAITERS, %edx LOCK cmpxchgl %edx, (%ebx) jnz 4b @@ -163,6 +164,7 @@ __lll_robust_mutex_timedlock_wait: jne 7f movl %gs:TID, %edx + orl $FUTEX_WAITERS, %edx LOCK cmpxchgl %edx, (%ebx) jnz 7f diff --git a/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c b/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c index b7faeaf257..3e88ee1866 100644 --- a/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c +++ b/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c @@ -42,7 +42,9 @@ __lll_robust_lock_wait (int *futex) lll_futex_wait (futex, newval); } - while ((oldval = atomic_compare_and_exchange_val_acq (futex, tid, 0)) != 0); + while ((oldval = atomic_compare_and_exchange_val_acq (futex, + tid | FUTEX_WAITERS, + 0)) != 0); return 0; } @@ -89,7 +91,7 @@ __lll_robust_timedlock_wait (int *futex, const struct timespec *abstime) lll_futex_timed_wait (futex, newval, &rt); } - while (atomic_compare_and_exchange_bool_acq (futex, tid, 0)); + while (atomic_compare_and_exchange_bool_acq (futex, tid | FUTEX_WAITERS, 0)); return 0; } diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S index 7bb9191691..1a088e27b1 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S @@ -78,6 +78,7 @@ __lll_robust_mutex_lock_wait: jne 4b movl %fs:TID, %edx + orl $FUTEX_WAITERS, %edx LOCK cmpxchgl %edx, (%rdi) jnz 4b @@ -169,6 +170,7 @@ __lll_robust_mutex_timedlock_wait: jne 7f movl %fs:TID, %edx + orl $FUTEX_WAITERS, %edx LOCK cmpxchgl %edx, (%r12) jnz 7f |