diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-03-19 09:42:14 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-03-19 09:42:14 +0000 |
commit | bbb9ba4324f36a7c4d933d6ebda033519cd43a53 (patch) | |
tree | 9ac75d5c55698afd778f3731d28ca483cbe930a8 | |
parent | ca341eb2bd82a17dc9042e9669a7db181d6ceb29 (diff) | |
download | glibc-bbb9ba4324f36a7c4d933d6ebda033519cd43a53.tar.gz glibc-bbb9ba4324f36a7c4d933d6ebda033519cd43a53.tar.xz glibc-bbb9ba4324f36a7c4d933d6ebda033519cd43a53.zip |
(__pthread_cond_broadcast): Release lock before waking waiters.
-rw-r--r-- | nptl/sysdeps/pthread/pthread_cond_broadcast.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/nptl/sysdeps/pthread/pthread_cond_broadcast.c b/nptl/sysdeps/pthread/pthread_cond_broadcast.c index 7ae1602fc1..1076fe3c50 100644 --- a/nptl/sysdeps/pthread/pthread_cond_broadcast.c +++ b/nptl/sysdeps/pthread/pthread_cond_broadcast.c @@ -40,6 +40,9 @@ __pthread_cond_broadcast (cond) /* Yes. Mark them all as woken. */ cond->__data.__wakeup_seq = cond->__data.__total_seq; + /* We are done. */ + lll_mutex_unlock (cond->__data.__lock); + /* The futex syscall operates on a 32-bit word. That is fine, we just use the low 32 bits of the sequence counter. */ #if BYTE_ORDER == LITTLE_ENDIAN @@ -52,6 +55,9 @@ __pthread_cond_broadcast (cond) /* Wake everybody. */ lll_futex_wake (futex, INT_MAX); + + /* That's all. */ + return 0; } /* We are done. */ |