From: Matthias Kruk Date: Sun, 29 Sep 2019 05:52:25 +0000 (+0900) Subject: Initialize the process's time slice and put it on the ready queue in process_create() X-Git-Url: https://git.corax.cc/?a=commitdiff_plain;h=ee788037e91fdc009b0e5e07d51adf46a81b914a;p=corax Initialize the process's time slice and put it on the ready queue in process_create() --- diff --git a/kernel/core/process.c b/kernel/core/process.c index fb0b75c..8562f51 100644 --- a/kernel/core/process.c +++ b/kernel/core/process.c @@ -5,6 +5,7 @@ #include #include #include +#include "sched.h" struct process { struct pagedir *p_pgdir; @@ -12,6 +13,8 @@ struct process { u32_t p_privl; }; +extern int sched_enqueue(task_t*); + int process_create(process_t **dst, u32_t ppl, void *entry) { int ret_val; @@ -49,6 +52,13 @@ int process_create(process_t **dst, u32_t ppl, void *entry) proc->p_tasks->t_sp = (u32_t)(CONFIG_KERNEL_STACK_BASE + ((u32_t)proc->p_tasks->t_sp - (u32_t)kstack)); + + proc->p_tasks->t_tslice = 50; + proc->p_tasks->t_rslice = 50; + + if(sched_enqueue(proc->p_tasks) != 0) { + PANIC("sched_enqueue() failed for a new task\n"); + } } cleanup: