aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/htl/pt-cond-brdcast.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-02-10 23:06:33 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-02-11 00:32:44 +0100
commit8ba6ad703cb38ec57cdb473650ac289e5f8496d5 (patch)
tree843104571af29b6872721b6477d3b2e2444a3e96 /sysdeps/htl/pt-cond-brdcast.c
parentcd7965bd970b0a298e734acc9dafae0a5db5f712 (diff)
downloadglibc-8ba6ad703cb38ec57cdb473650ac289e5f8496d5.tar
glibc-8ba6ad703cb38ec57cdb473650ac289e5f8496d5.tar.gz
glibc-8ba6ad703cb38ec57cdb473650ac289e5f8496d5.tar.bz2
glibc-8ba6ad703cb38ec57cdb473650ac289e5f8496d5.zip
hurd: Add __pthread_spin_wait and use it
900778283ac3 ("htl: make pthread_spin_lock really spin") made pthread_spin_lock really spin and not block, but the current users of __pthread_spin_lock were assuming that it blocks, i.e. they use it as a lightweight mutex fitting in just one int. __pthread_spin_wait provides that support back.
Diffstat (limited to 'sysdeps/htl/pt-cond-brdcast.c')
-rw-r--r--sysdeps/htl/pt-cond-brdcast.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sysdeps/htl/pt-cond-brdcast.c b/sysdeps/htl/pt-cond-brdcast.c
index 37dec0a31b..816d183ab4 100644
--- a/sysdeps/htl/pt-cond-brdcast.c
+++ b/sysdeps/htl/pt-cond-brdcast.c
@@ -26,7 +26,7 @@ __pthread_cond_broadcast (pthread_cond_t *cond)
{
struct __pthread *wakeup;
- __pthread_spin_lock (&cond->__lock);
+ __pthread_spin_wait (&cond->__lock);
while ((wakeup = cond->__queue))
{
__pthread_dequeue (wakeup);
@@ -34,7 +34,7 @@ __pthread_cond_broadcast (pthread_cond_t *cond)
/* Wake it up without spin held, so it may have a chance to really
preempt us */
__pthread_wakeup (wakeup);
- __pthread_spin_lock (&cond->__lock);
+ __pthread_spin_wait (&cond->__lock);
}
__pthread_spin_unlock (&cond->__lock);