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.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/lib/q.h (limited to 'src/lib/q.h') diff --git a/src/lib/q.h b/src/lib/q.h new file mode 100644 index 0000000..51ff1a1 --- /dev/null +++ b/src/lib/q.h @@ -0,0 +1,30 @@ +#ifndef LIB_Q_H +#define LIB_Q_H + +struct Q_base { + struct Q* next; + struct Q* last; +}; + +struct Q { + struct Q* next; + void* data; +}; + +struct Q_base* newq(); +void pushq(struct Q_base* qb, void* val); +void popq(struct Q_base* qb); + +#define showq(QQ, TYPE) { \ + if (QQ->next != 0) { \ + struct Q* t = QQ->next; \ + while (t->next != 0) { \ + uart_hex(*(TYPE*)t->data); \ + t = t->next; \ + uart_char(' '); \ + } \ + uart_hex(*(TYPE*)t->data); \ + } \ +} + +#endif -- cgit v1.2.1