Nucleus
Barry Task queues and full scheduling c530261 (3 years, 3 months ago)
diff --git a/include/nucleus/task.h b/include/nucleus/task.h
index 2761a3f..547fabc 100644
--- a/include/nucleus/task.h
+++ b/include/nucleus/task.h
@@ -8,6 +8,7 @@
#include <nucleus/memory.h>
typedef struct Task Task;
+typedef struct TaskQueue TaskQueue;
/* Task priorities */
enum Priority {
@@ -38,7 +39,14 @@ struct Task {
Task *next;
};
+/* Structure for a Task Queue */
+struct TaskQueue {
+ Object obj;
+ Task *start, *end;
+};
+
extern ObjectType taskType;
+extern ObjectType taskQueueType;
extern Task *currentTask[];
#define current currentTask[CPUID]
@@ -47,4 +55,8 @@ void init_tasking(void);
void schedule(void);
pid_t clone(int flags);
+void add_to_queue(TaskQueue *queue, Task *task);
+void remove_from_queue(TaskQueue *queue, Task *task);
+Task *pop_from_queue(TaskQueue *queue);
+
#endif