summaryrefslogtreecommitdiff
path: root/libcr_ipc/mutex.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcr_ipc/mutex.c')
-rw-r--r--libcr_ipc/mutex.c39
1 files changed, 0 insertions, 39 deletions
diff --git a/libcr_ipc/mutex.c b/libcr_ipc/mutex.c
deleted file mode 100644
index 198c738..0000000
--- a/libcr_ipc/mutex.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* libcr_ipc/mutex.c - Simple mutexes for libcr (implementation file)
- *
- * Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
- * SPDX-Licence-Identifier: AGPL-3.0-or-later
- */
-
-#include <assert.h>
-
-#include <libcr_ipc/mutex.h>
-
-void cr_mutex_lock(cr_mutex_t *mu) {
- assert(mu);
- if (!mu->tail)
- mu->tail = &mu->head;
- if (!mu->locked) {
- mu->locked = true;
- return;
- }
- struct _cr_ipc_cid_list self = {
- .val = cr_getcid(),
- .next = NULL,
- };
- *(mu->tail) = &self;
- mu->tail = &(self.next);
- cr_pause_and_yield();
-}
-
-void cr_mutex_unlock(cr_mutex_t *mu) {
- assert(mu);
- assert(mu->tail);
- assert(mu->locked);
- if (mu->head) {
- cr_unpause(mu->head->val);
- mu->head = mu->head->next;
- if (!mu->head)
- mu->tail = &mu->head;
- } else
- mu->locked = false;
-}