diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-11-09 09:09:07 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-11-09 09:09:07 +0000 |
commit | cbed6a607d6b42b0cb264d2bee1bd784c8504d60 (patch) | |
tree | ddbae943982b9b03fc676bf98ce597273de2c268 /nptl/sysdeps/unix/sysv/linux/i386/i486 | |
parent | 0f7e0ee507c4bfba62c9059451197e9a25a0598e (diff) | |
download | glibc-cbed6a607d6b42b0cb264d2bee1bd784c8504d60.tar glibc-cbed6a607d6b42b0cb264d2bee1bd784c8504d60.tar.gz glibc-cbed6a607d6b42b0cb264d2bee1bd784c8504d60.tar.bz2 glibc-cbed6a607d6b42b0cb264d2bee1bd784c8504d60.zip |
[BZ #5240]
* sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
If we time out, try one last time to lock the futex to avoid
losing a wakeup signal.
* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S index 745ab91239..6d3943b0eb 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S @@ -203,7 +203,7 @@ __lll_timedlock_wait: addl $1000000000, %edx subl $1, %ecx 4: testl %ecx, %ecx - js 5f /* Time is already up. */ + js 9f /* Time is already up. */ /* Store relative timeout. */ movl %ecx, (%esp) @@ -271,6 +271,10 @@ __lll_timedlock_wait: 5: movl $ETIMEDOUT, %eax jmp 6b + +9: movl $-ETIMEDOUT, %ecx + movl $2, %edx + jmp 8b cfi_endproc .size __lll_timedlock_wait,.-__lll_timedlock_wait #endif |