diff options
Diffstat (limited to 'kernel/scheduler.c')
| -rw-r--r-- | kernel/scheduler.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c index 8cadcb8..694d81c 100644 --- a/kernel/scheduler.c +++ b/kernel/scheduler.c @@ -133,7 +133,9 @@ static uint32_t scheduler_schedule(uint32_t idx) current_task[cpu]=idx; -// klog("cpu %d rescheduled to %d",cpu,idx); +#ifdef LOG_SCHEDULER + klog("cpu %d rescheduled to %d",cpu,idx); +#endif //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); @@ -508,6 +510,13 @@ volatile int task_add_win(uint32_t pid,ringbuffer *r) return 0; } +int task_set_esp(uint32_t pid, uint32_t esp) +{ + uint32_t cpu=smp_get(SMP_APIC_ID); + uint32_t idx=task_idx(pid); + task_list[cpu][idx].esp=esp; + return 0; +} volatile int task_reset(uint32_t pid, uint32_t entry, uint32_t stack,uint32_t brk) { uint32_t cpu=smp_get(SMP_APIC_ID); @@ -517,7 +526,8 @@ volatile int task_reset(uint32_t pid, uint32_t entry, uint32_t stack,uint32_t br stk[14]=entry; stk[17]=stack; - __asm__("int $0x81"); // now we also reschedule (at least for execve sake...) + +// __asm__("int $0x81"); // now we also reschedule (for execve sake...) return 1; } |
