From e2a6ca9d03a3c0743384f0955609650f2cdce9bb Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 18 Oct 2018 06:23:26 +0200 Subject: struggling with new syscalls --- kernel/scheduler.c | 62 +++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'kernel/scheduler.c') diff --git a/kernel/scheduler.c b/kernel/scheduler.c index 5a65b7e..8cadcb8 100644 --- a/kernel/scheduler.c +++ b/kernel/scheduler.c @@ -133,7 +133,7 @@ static uint32_t scheduler_schedule(uint32_t idx) current_task[cpu]=idx; - //klog("idx %d",idx); +// klog("cpu %d rescheduled to %d",cpu,idx); //klog("name: %s",task_list[cpu][idx].name); //klog("cpu %d / idx %d / pid %d / name: %5s",cpu,idx,task_list[cpu][idx].pid,task_list[cpu][idx].name); @@ -171,10 +171,16 @@ volatile uint32_t scheduler_run(uint32_t oldesp,uint32_t preference) } else task_list[cpu][current_task[cpu]].esp=oldesp; + if(preference>0) // try preference first if any.. + { + uint32_t esp=scheduler_schedule(preference); + if(esp)return esp; + } + for(int i=0;i