#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; }