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/pthread | |
parent | d5cb838958b610de0bef12722860030eec964aaf (diff) | |
download | glibc-24a49f38ad4f05aca5d4b55b2bc1ac31347342ce.tar glibc-24a49f38ad4f05aca5d4b55b2bc1ac31347342ce.tar.gz glibc-24a49f38ad4f05aca5d4b55b2bc1ac31347342ce.tar.bz2 glibc-24a49f38ad4f05aca5d4b55b2bc1ac31347342ce.zip |
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/pthread')
-rw-r--r-- | nptl/sysdeps/pthread/pthread_cond_wait.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/nptl/sysdeps/pthread/pthread_cond_wait.c b/nptl/sysdeps/pthread/pthread_cond_wait.c index 412bca9c25..708566be03 100644 --- a/nptl/sysdeps/pthread/pthread_cond_wait.c +++ b/nptl/sysdeps/pthread/pthread_cond_wait.c @@ -50,6 +50,9 @@ __condvar_cleanup (void *arg) ++cbuffer->cond->__data.__wakeup_seq; ++cbuffer->cond->__data.__woken_seq; + /* We are done. */ + lll_mutex_unlock (cbuffer->cond->__data.__lock); + /* Wake everybody to make sure no condvar signal gets lost. */ #if BYTE_ORDER == LITTLE_ENDIAN int *futex = ((int *) (&cbuffer->cond->__data.__wakeup_seq)); @@ -60,9 +63,6 @@ __condvar_cleanup (void *arg) #endif lll_futex_wake (futex, INT_MAX); - /* We are done. */ - lll_mutex_unlock (cbuffer->cond->__data.__lock); - /* Get the mutex before returning unless asynchronous cancellation is in effect. */ if (!(cbuffer->oldtype & CANCELTYPE_BITMASK)) |