diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-04-11 07:21:28 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-04-11 08:37:33 -0600 |
commit | 8db1fb76584a22ec4f93da1b52b3ff63a8e21c96 (patch) | |
tree | 358c65a75ec808c520ae230e29bb4ce60a0552bf /libcr_ipc/sema.c | |
parent | b44c17b2791ffa3f11d96db8fb19fe9e4d45b837 (diff) |
Move the linkedlist to libmisc
Diffstat (limited to 'libcr_ipc/sema.c')
-rw-r--r-- | libcr_ipc/sema.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/libcr_ipc/sema.c b/libcr_ipc/sema.c index 85add6c..cb984b6 100644 --- a/libcr_ipc/sema.c +++ b/libcr_ipc/sema.c @@ -9,10 +9,8 @@ #define IMPLEMENTATION_FOR_LIBCR_IPC_SEMA_H YES #include <libcr_ipc/sema.h> -#include "_linkedlist.h" - struct cr_sema_waiter { - cr_ipc_sll_node; + lm_sll_node; cid_t cid; }; @@ -24,7 +22,7 @@ void cr_sema_signal(cr_sema_t *sema) { sema->cnt++; if (sema->waiters.front && !sema->unpausing) { cr_unpause( - cr_ipc_sll_node_cast(struct cr_sema_waiter, sema->waiters.front)->cid); + lm_sll_node_cast(struct cr_sema_waiter, sema->waiters.front)->cid); sema->unpausing = true; } cr_restore_interrupts(saved); @@ -37,7 +35,7 @@ void cr_sema_signal_from_intrhandler(cr_sema_t *sema) { sema->cnt++; if (sema->waiters.front && !sema->unpausing) { cr_unpause_from_intrhandler( - cr_ipc_sll_node_cast(struct cr_sema_waiter, sema->waiters.front)->cid); + lm_sll_node_cast(struct cr_sema_waiter, sema->waiters.front)->cid); sema->unpausing = true; } } @@ -51,15 +49,15 @@ void cr_sema_wait(cr_sema_t *sema) { struct cr_sema_waiter self = { .cid = cr_getcid(), }; - cr_ipc_sll_push_to_rear(&sema->waiters, &self); - if (sema->waiters.front != &self.cr_ipc_sll_node || !sema->cnt) + lm_sll_push_to_rear(&sema->waiters, &self); + if (sema->waiters.front != &self.lm_sll_node || !sema->cnt) cr_pause_and_yield(); - assert(sema->waiters.front == &self.cr_ipc_sll_node && sema->cnt); - cr_ipc_sll_pop_from_front(&sema->waiters); + assert(sema->waiters.front == &self.lm_sll_node && sema->cnt); + lm_sll_pop_from_front(&sema->waiters); sema->cnt--; if (sema->cnt && sema->waiters.front) cr_unpause( - cr_ipc_sll_node_cast(struct cr_sema_waiter, sema->waiters.front)->cid); + lm_sll_node_cast(struct cr_sema_waiter, sema->waiters.front)->cid); else sema->unpausing = false; cr_restore_interrupts(saved); |