diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2021-03-16 20:46:15 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2021-03-16 20:46:15 +0200 |
commit | 785d20a6b809e140448108e29b791d59c4650c91 (patch) | |
tree | 2617763dac6520d83a969157e89c339ee70c6ee3 /src/scheduler.h | |
parent | Switch lto to full (diff) | |
download | kernel.cpp-785d20a6b809e140448108e29b791d59c4650c91.tar.xz |
Mostly fix scheduler throwing page faults
Diffstat (limited to 'src/scheduler.h')
-rw-r--r-- | src/scheduler.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/scheduler.h b/src/scheduler.h index a3148bb..14b844c 100644 --- a/src/scheduler.h +++ b/src/scheduler.h @@ -2,16 +2,22 @@ #include <types.h> #include "idt.h" +#include "vmm.h" class Scheduler : public InterruptHandler { public: + struct task { + cpu_state_t* cpu = nullptr; + vmm* mm = nullptr; + + task() = default; + task(uint8_t* stack, void (*entry)(), uint16_t cs); + }; + Scheduler(uint16_t cs); - [[nodiscard]] uint16_t add_task(uint8_t* stack, uint16_t cs, void (*entry)()); + [[nodiscard]] uint16_t add_task(task); [[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; }; |