summaryrefslogtreecommitdiff
path: root/kernel/sched.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c25
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) {