From 0882221263aa14669946f57578d3ee014493f58f Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Sat, 3 Dec 2022 17:47:58 +0100 Subject: scheduler base --- kernel/src/scheduler/process.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 kernel/src/scheduler/process.c (limited to 'kernel/src/scheduler/process.c') diff --git a/kernel/src/scheduler/process.c b/kernel/src/scheduler/process.c new file mode 100644 index 0000000..a8de836 --- /dev/null +++ b/kernel/src/scheduler/process.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include + +process_t process_list; +process_t current_process; + +void create_process(uint64_t rip, uint64_t param1, uint64_t param2) +{ + process_t* process = (process_t*)kalloc(sizeof(process_t)); + registers_t regs = process->registers; + regs.rax = 0; + regs.rbx = 0; + regs.rcx = 0; + regs.rdx = 0; + regs.rsi = 0; + regs.rdi = 0; + regs.rsp = 0; + regs.rbp = 0; + regs.r8 = 0; + regs.r9 = 0; + regs.r10 = 0; + regs.r11 = 0; + regs.r12 = 0; + regs.r13 = 0; + regs.r14 = 0; + regs.r15 = 0; + regs.rflags = 0; + + uint64_t stack_size = 4*4096; + regs.rsp = (uint64_t)kalloc(4*4096) + stack_size - 8; + regs.rip = rip; + regs.rdi = param1; + regs.rsi = param2; + process->status = STATUS_READY; + process->time_using_cpu = 0; +} -- cgit v1.2.3