diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-03-02 00:25:56 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-03-02 00:25:56 +0000 |
commit | 42b6ddfca528a12ff7b4065e8ca8c2631d754260 (patch) | |
tree | d97dee2b539207dee491c0347a1e5ee78c67491d /nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c | |
parent | c99445f897367f658bb3c0da1cf5a8a8620931aa (diff) | |
download | glibc-42b6ddfca528a12ff7b4065e8ca8c2631d754260.tar.gz glibc-42b6ddfca528a12ff7b4065e8ca8c2631d754260.tar.xz glibc-42b6ddfca528a12ff7b4065e8ca8c2631d754260.zip |
(__lll_robust_lock_wait): Also set FUTEX_WAITERS buit if we got the mutex. (__lll_robust_timedlock_wait): Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c | 6 |
1 files changed, 4 insertions, 2 deletions
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; } |