diff options
Diffstat (limited to 'kern/rtmutex.c')
-rw-r--r-- | kern/rtmutex.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kern/rtmutex.c b/kern/rtmutex.c index 3f4251f0..6f639ddf 100644 --- a/kern/rtmutex.c +++ b/kern/rtmutex.c @@ -29,7 +29,7 @@ static void rtmutex_set_contended(struct rtmutex *rtmutex) { - atomic_or(&rtmutex->owner, RTMUTEX_CONTENDED, ATOMIC_SEQ_CST); + atomic_or_acq_rel(&rtmutex->owner, RTMUTEX_CONTENDED); } void @@ -49,7 +49,7 @@ rtmutex_lock_slow(struct rtmutex *rtmutex) bits = RTMUTEX_CONTENDED; for (;;) { - prev_owner = atomic_cas_seq_cst(&rtmutex->owner, bits, owner | bits); + prev_owner = atomic_cas_acquire(&rtmutex->owner, bits, owner | bits); assert((prev_owner & bits) == bits); if (prev_owner == bits) { @@ -64,7 +64,7 @@ rtmutex_lock_slow(struct rtmutex *rtmutex) turnstile_own(turnstile); if (turnstile_empty(turnstile)) { - prev_owner = atomic_swap_seq_cst(&rtmutex->owner, owner); + prev_owner = atomic_swap_acquire(&rtmutex->owner, owner); assert(prev_owner == (owner | bits)); } @@ -89,7 +89,7 @@ rtmutex_unlock_slow(struct rtmutex *rtmutex) turnstile = turnstile_acquire(rtmutex); assert(turnstile != NULL); - prev_owner = atomic_swap_seq_cst(&rtmutex->owner, + prev_owner = atomic_swap_release(&rtmutex->owner, RTMUTEX_FORCE_WAIT | RTMUTEX_CONTENDED); assert((prev_owner & RTMUTEX_OWNER_MASK) == owner); |