diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-03-18 18:56:16 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-03-18 18:56:16 +0000 |
commit | 24a49f38ad4f05aca5d4b55b2bc1ac31347342ce (patch) | |
tree | 4ea12aecc7307ff8f68b04002196da07928b0300 /nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S | |
parent | d5cb838958b610de0bef12722860030eec964aaf (diff) |
Update.
* sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
(pthrad_cond_t): Replace __unused field with __clock.
* sysdeps/pthread/pthread_cond_wait.c: Release condvar lock before
waken all waiters in cleanup handler.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S index 835486a8a1..652ddca772 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S @@ -65,14 +65,6 @@ __condvar_cleanup: incq woken_seq(%rdi) - /* Wake up all waiters to make sure no signal gets lost. */ - addq $wakeup_seq, %rdi - movq $FUTEX_WAKE, %rsi - movl $0x7fffffff, %edx - movq $SYS_futex, %rax - syscall - subq $wakeup_seq, %rdi - LOCK #if cond_lock == 0 decl (%rdi) @@ -85,8 +77,15 @@ __condvar_cleanup: #endif callq __lll_mutex_unlock_wake + /* Wake up all waiters to make sure no signal gets lost. */ +2: addq $wakeup_seq, %rdi + movq $FUTEX_WAKE, %rsi + movl $0x7fffffff, %edx + movq $SYS_futex, %rax + syscall + /* Lock the mutex unless asynchronous cancellation is in effect. */ -2: testq $2, (%r8) + testq $2, (%r8) jne 3f movq 16(%r8), %rdi |