From 4f08ba2b1d0ad7ea90d4d97a483b56b891b9c902 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sat, 1 May 2021 11:37:52 +0200 Subject: Creating scheduler, debug paging --- src/core/scheduler.cc | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/core/scheduler.cc (limited to 'src/core/scheduler.cc') diff --git a/src/core/scheduler.cc b/src/core/scheduler.cc new file mode 100644 index 0000000..00741fe --- /dev/null +++ b/src/core/scheduler.cc @@ -0,0 +1,40 @@ +#include "scheduler.hpp" + +TASK tasks[MAX_TASK]; +u32 ntasks=0; +char show_ticks=0; + +extern "C" void clock(){ + if(show_ticks) + print("."); +} +void schedule(){ + +} + + +void create_task(void* task, u32 size){ + if(ntasks>=MAX_TASK){ + printk("Could not create more tasks."); + return; + } + + TASK *t=&tasks[ntasks]; + t->id=ntasks; + t->pid=ntasks; + t->size=size; + t->pml4=paging_create_task(size/4096+1); + + // Load task using + lpml4(t->pml4); + memcpy(task, TASK_VMA, size); + lpml4(kpml4); + + ntasks++; +} + +void scheduler_start(){ + TASK *t=&tasks[0]; + lpml4(t->pml4); + asm("jmp switch"); +} \ No newline at end of file -- cgit v1.2.3