summaryrefslogtreecommitdiff
path: root/hurd/hurdlock.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2016-09-02 09:31:12 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-09-02 09:31:12 +0200
commit0e4eea2bb9e4891b1364a05de39680affd3d96bd (patch)
treee8934455118a02ea74b4a1b1d2e4338fe61df0f1 /hurd/hurdlock.c
parent10b720f04ac2424e78a88da6b747c5bd9b0c2bbd (diff)
replace atomic_compare_and_exchange_bool_rel with atomic_compare_exchange_weak_release
Diffstat (limited to 'hurd/hurdlock.c')
-rw-r--r--hurd/hurdlock.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/hurd/hurdlock.c b/hurd/hurdlock.c
index d6e47316ea..4059b7926c 100644
--- a/hurd/hurdlock.c
+++ b/hurd/hurdlock.c
@@ -232,15 +232,15 @@ int lll_robust_trylock (void *ptr)
void lll_robust_unlock (void *ptr, int flags)
{
+ unsigned int val = atomic_load_relaxed((unsigned int *)ptr);
while (1)
{
- unsigned int val = *(unsigned int *)ptr;
if (val & LLL_WAITERS)
{
lll_set_wake (ptr, 0, flags);
break;
}
- else if (atomic_compare_and_exchange_bool_rel ((int *)ptr, 0, val) == 0)
+ else if (atomic_compare_exchange_weak_release ((unsigned int *)ptr, &val, 0))
break;
}
}