summaryrefslogtreecommitdiff
path: root/kern/rtmutex.c
diff options
context:
space:
mode:
Diffstat (limited to 'kern/rtmutex.c')
-rw-r--r--kern/rtmutex.c8
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);