aboutsummaryrefslogtreecommitdiff
path: root/kernel/lib
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-08-26 23:27:46 -0700
committerChristian Cunningham <cc@localhost>2022-08-26 23:27:46 -0700
commit41a7818b552aef9e6e0bf788089f6ae16ae1e421 (patch)
tree87b4010b7f24a75d497450b3d98fc4f8f667e404 /kernel/lib
parent8b36a39774789cee66d84db9f0086af15cacc211 (diff)
Mutex wait queuesno-search
Diffstat (limited to 'kernel/lib')
-rw-r--r--kernel/lib/queue.c43
1 files changed, 6 insertions, 37 deletions
diff --git a/kernel/lib/queue.c b/kernel/lib/queue.c
index 1fc35f6..38ef8cf 100644
--- a/kernel/lib/queue.c
+++ b/kernel/lib/queue.c
@@ -2,54 +2,23 @@
void push_to_queue(struct Entry* e, struct Queue* q)
{
- q->end.next->next = e;
- q->end.next = e;
- e->next = &q->end;
-}
-
-void prepend_to_queue(struct Entry* e, struct Queue* q)
-{
e->next = q->start.next;
q->start.next = e;
- if (e->next->entry_type == END_ENTRY)
- q->end.next = e;
}
struct Entry* pop_from_queue(struct Queue* q)
{
- if (q->start.next->entry_type == END_ENTRY)
+ if (q->start.next == 0)
return 0;
struct Entry* e = q->start.next;
q->start.next = e->next;
- if (e->next->entry_type == END_ENTRY)
- q->end.next = &q->start;
return e;
}
-struct Entry* remove_next_from_queue(struct Entry* e)
-{
- struct Entry* prev = e;
- struct Entry* remove = e->next;
- struct Entry* next = remove->next;
- if (remove->entry_type != VALUE_ENTRY)
+struct Entry* remove_next_from_queue(struct Entry* e) {
+ if (e->next == 0)
return 0;
- prev->next = next;
- if (next->entry_type == END_ENTRY)
- next->next = prev;
- return remove;
-}
-
-struct Entry* find_value(void* value, struct Queue* q)
-{
- struct Entry* prev;
- struct Entry* entry;
- prev = &q->start;
- entry = prev->next;
- while (entry->entry_type != END_ENTRY) {
- if (entry->value == value)
- return prev;
- prev = entry;
- entry = prev->next;
- }
- return 0;
+ struct Entry* next = e->next;
+ e->next = next->next;
+ return next;
}