diff options
Diffstat (limited to 'kernel/sched.c')
| -rw-r--r-- | kernel/sched.c | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index c9f0da9..675867c 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -208,28 +208,6 @@ void sched_init(void) { switch_to(0, &tasks[0]); } -void save_state(void) { - if(ctask == NULL || cstate == NULL) - return; - - ctask->state.eax = cstate->eax; - ctask->state.ebx = cstate->ebx; - ctask->state.ecx = cstate->ecx; - ctask->state.edx = cstate->edx; - ctask->state.esi = cstate->esi; - ctask->state.edi = cstate->edi; - ctask->state.esp = cstate->esp; - ctask->state.ebp = cstate->ebp; - ctask->state.cs = cstate->cs; - ctask->state.ds = cstate->ds; - ctask->state.es = cstate->ds; - ctask->state.fs = cstate->ds; - ctask->state.gs = cstate->ds; - ctask->state.ss = cstate->ss; - ctask->state.eflags = cstate->eflags; - ctask->state.eip = cstate->eip; -} - void reschedule(void) { int i; uint32_t n; @@ -241,8 +219,9 @@ void reschedule(void) { for(i = 0; i < NRTASKS; i++) { n = (n + 1) % NRTASKS; if(tasks[n].pid) - switch_to(n, &tasks[n]); + break; } + switch_to(n, &tasks[n]); } void sched_tick(void) { |
