From e15d41a5619c41f3440369e625d6d96921718221 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Thu, 30 Dec 2021 20:50:44 -0800 Subject: Added Data Structures Added basic scheduling TODO: Preserve registers for context switch --- src/lib/q.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/lib/q.c (limited to 'src/lib/q.c') diff --git a/src/lib/q.c b/src/lib/q.c new file mode 100644 index 0000000..e40fee8 --- /dev/null +++ b/src/lib/q.c @@ -0,0 +1,38 @@ +#include "../lib/q.h" +#include "../lib/mem.h" + +struct Q_base* newq() +{ + struct Q_base* q = (struct Q_base*)malloc(sizeof(struct Q_base)); + q->next = 0; + q->last = 0; + return q; +} + +void pushq(struct Q_base* qb, void* val) +{ + struct Q* n = (struct Q*)malloc(sizeof(struct Q)); + n->next = 0; + n->data = val; + if (qb->last != 0) + qb->last->next = n; + else { + qb->next = n; + } + qb->last = n; +} + +void popq(struct Q_base* qb) +{ + if (qb->next == 0) + return; + if (qb->next == qb->last) { + free(qb->next); + qb->next = 0; + qb->last = 0; + return; + } + struct Q* t = qb->next; + qb->next = qb->next->next; + free(t); +} -- cgit v1.2.1