diff options
Diffstat (limited to 'kern/rtmutex.c')
-rw-r--r-- | kern/rtmutex.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kern/rtmutex.c b/kern/rtmutex.c index 55d17cdc..6567b063 100644 --- a/kern/rtmutex.c +++ b/kern/rtmutex.c @@ -107,7 +107,7 @@ rtmutex_lock_slow_common(struct rtmutex *rtmutex, bool timed, uint64_t ticks) bits = RTMUTEX_CONTENDED; for (;;) { - owner = atomic_cas_acquire(&rtmutex->owner, bits, self | bits); + owner = atomic_cas(&rtmutex->owner, bits, self | bits, ATOMIC_ACQUIRE); assert((owner & bits) == bits); if (owner == bits) { @@ -211,8 +211,9 @@ rtmutex_unlock_slow(struct rtmutex *rtmutex) } } - owner = atomic_swap_release(&rtmutex->owner, - RTMUTEX_FORCE_WAIT | RTMUTEX_CONTENDED); + owner = atomic_swap(&rtmutex->owner, + RTMUTEX_FORCE_WAIT | RTMUTEX_CONTENDED, + ATOMIC_RELEASE); assert(rtmutex_get_thread(owner) == thread_self()); turnstile_disown(turnstile); |