aboutsummaryrefslogtreecommitdiff
path: root/src/scheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/scheduler.h')
-rw-r--r--src/scheduler.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/scheduler.h b/src/scheduler.h
new file mode 100644
index 0000000..9e5e9f2
--- /dev/null
+++ b/src/scheduler.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include <types.h>
+#include "idt.h"
+
+class Scheduler : public InterruptHandler {
+public:
+ Scheduler(uint16_t cs);
+
+ bool add_task(uint8_t* stack, uint16_t cs, void (*entry)());
+ [[nodiscard]] cpu_state_t* trigger(cpu_state_t*) override;
+
+private:
+ uint16_t current_task = 0;
+ uint16_t last_task_id = 0;
+ uint16_t num_tasks = 0;
+};