summaryrefslogtreecommitdiff
path: root/libcr_ipc/rwmutex.c
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-12 08:34:19 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-12 08:34:19 -0600
commitddd3f3982c6cdf8d7d0068e544cc9daf24355d32 (patch)
tree747821d810bf6ecb97089af088e3946cfc1225ce /libcr_ipc/rwmutex.c
parentd053a0f6dffc575611324b81acaef0d1554bda6c (diff)
parente0d67aeb886c75dde8f05120a2d8d1bd2dd2c16c (diff)
Merge branch 'lukeshu/tidy'
Diffstat (limited to 'libcr_ipc/rwmutex.c')
-rw-r--r--libcr_ipc/rwmutex.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/libcr_ipc/rwmutex.c b/libcr_ipc/rwmutex.c
index 04016d6..4c5da81 100644
--- a/libcr_ipc/rwmutex.c
+++ b/libcr_ipc/rwmutex.c
@@ -9,10 +9,8 @@
#define IMPLEMENTATION_FOR_LIBCR_IPC_RWMUTEX_H YES
#include <libcr_ipc/rwmutex.h>
-#include "_linkedlist.h"
-
struct cr_rwmutex_waiter {
- cr_ipc_sll_node;
+ lm_sll_node;
bool is_reader;
cid_t cid;
};
@@ -25,13 +23,13 @@ void cr_rwmutex_lock(cr_rwmutex_t *mu) {
.is_reader = false,
.cid = cr_getcid(),
};
- cr_ipc_sll_push_to_rear(&mu->waiters, &self);
- if (mu->waiters.front != &self.cr_ipc_sll_node || mu->locked)
+ lm_sll_push_to_rear(&mu->waiters, &self);
+ if (mu->waiters.front != &self.lm_sll_node || mu->locked)
cr_pause_and_yield();
- assert(mu->waiters.front == &self.cr_ipc_sll_node);
+ assert(mu->waiters.front == &self.lm_sll_node);
/* We now hold the lock (and are mu->waiters.front). */
- cr_ipc_sll_pop_from_front(&mu->waiters);
+ lm_sll_pop_from_front(&mu->waiters);
assert(mu->nreaders == 0);
mu->locked = true;
mu->unpausing = false;
@@ -45,18 +43,17 @@ void cr_rwmutex_rlock(cr_rwmutex_t *mu) {
.is_reader = true,
.cid = cr_getcid(),
};
- cr_ipc_sll_push_to_rear(&mu->waiters, &self);
- if (mu->waiters.front != &self.cr_ipc_sll_node || (mu->locked && mu->nreaders == 0))
+ lm_sll_push_to_rear(&mu->waiters, &self);
+ if (mu->waiters.front != &self.lm_sll_node || (mu->locked && mu->nreaders == 0))
cr_pause_and_yield();
- assert(mu->waiters.front == &self.cr_ipc_sll_node);
+ assert(mu->waiters.front == &self.lm_sll_node);
/* We now hold the lock (and are mu->waiters.front). */
- cr_ipc_sll_pop_from_front(&mu->waiters);
+ lm_sll_pop_from_front(&mu->waiters);
mu->nreaders++;
mu->locked = true;
- struct cr_rwmutex_waiter *waiter = mu->waiters.front
- ? cr_ipc_sll_node_cast(struct cr_rwmutex_waiter, mu->waiters.front)
- : NULL;
+ struct cr_rwmutex_waiter *waiter =
+ lm_sll_node_cast(struct cr_rwmutex_waiter, mu->waiters.front);
if (waiter && waiter->is_reader) {
assert(mu->unpausing);
cr_unpause(waiter->cid);
@@ -74,7 +71,7 @@ void cr_rwmutex_unlock(cr_rwmutex_t *mu) {
assert(!mu->unpausing);
if (mu->waiters.front) {
struct cr_rwmutex_waiter *waiter =
- cr_ipc_sll_node_cast(struct cr_rwmutex_waiter, mu->waiters.front);
+ lm_sll_node_cast(struct cr_rwmutex_waiter, mu->waiters.front);
mu->unpausing = true;
cr_unpause(waiter->cid);
} else {
@@ -92,7 +89,7 @@ void cr_rwmutex_runlock(cr_rwmutex_t *mu) {
if (mu->nreaders == 0 && !mu->unpausing) {
if (mu->waiters.front) {
struct cr_rwmutex_waiter *waiter =
- cr_ipc_sll_node_cast(struct cr_rwmutex_waiter, mu->waiters.front);
+ lm_sll_node_cast(struct cr_rwmutex_waiter, mu->waiters.front);
assert(!waiter->is_reader);
mu->unpausing = true;
cr_unpause(waiter->cid);