diff --git a/src/sys/include/ubixos/schedule.h b/src/sys/include/ubixos/schedule.h index fe23056..35d776e 100755 --- a/src/sys/include/ubixos/schedule.h +++ b/src/sys/include/ubixos/schedule.h @@ -27,15 +27,15 @@ #include #define numTasks 1024 -#define RUNABLE 3 +/* #define RUNABLE 3 #define ACTIVE 2 #define INACTIVE 1 -#define AVAILABLE 0 +#define AVAILABLE 0 */ // Possible states for tasks to be in. enum { STARTING = 0, READY, RUNNING, SUSPEND, SLEEP, BLOCK, - MSGREPLY, MSGWAIT, JOIN, EXITING + MSGREPLY, MSGWAIT, JOIN, EXITING, EMPTY }; struct tssStruct { diff --git a/src/sys/kernel/exec.c b/src/sys/kernel/exec.c index e238058..04725d5 100755 --- a/src/sys/kernel/exec.c +++ b/src/sys/kernel/exec.c @@ -106,7 +106,7 @@ taskList[pid].tss.gs = 0x10; taskList[pid].tss.ldt = 0x18; taskList[pid].tss.trace_bitmap = 0x80000000; - taskList[pid].status = RUNABLE; + taskList[pid].status = READY; asm( "movl %0,%%eax \n" "movl %%eax,%%cr3 \n" @@ -139,5 +139,5 @@ taskList[pid].tss.gs = 0x10; taskList[pid].tss.ldt = 0x18; taskList[pid].tss.trace_bitmap = 0x80000000; - taskList[pid].status = RUNABLE; + taskList[pid].status = READY; } diff --git a/src/sys/kernel/fork.c b/src/sys/kernel/fork.c index c201002..1eb0056 100755 --- a/src/sys/kernel/fork.c +++ b/src/sys/kernel/fork.c @@ -42,7 +42,7 @@ dst[i] = src[i]; } taskList[cPid].id = cPid; - taskList[cPid].status = AVAILABLE; + taskList[cPid].status = READY; pageDirsrc = (uLong *)_current->tss.cr3; pageDirdst = (uLong *)allocPage(); taskList[cPid].tss.cr3 = (long)pageDirdst; @@ -81,7 +81,7 @@ } schedule(); taskList[cPid].tss.eip = _current->tss.eip; - taskList[cPid].status = ACTIVE; + taskList[cPid].status = RUNNING; if (_current->id == cPid) { ret[0] = 0; } diff --git a/src/sys/kernel/idt.c b/src/sys/kernel/idt.c index 3e3f885..f9ca366 100755 --- a/src/sys/kernel/idt.c +++ b/src/sys/kernel/idt.c @@ -102,7 +102,7 @@ } void _int6() { kprintf("int6: Invalid opcode!\n"); - _current->status = AVAILABLE; + _current->status = EXITING; schedule(); while(1); } diff --git a/src/sys/kernel/schedule.c b/src/sys/kernel/schedule.c index c1ee46a..9653afb 100755 --- a/src/sys/kernel/schedule.c +++ b/src/sys/kernel/schedule.c @@ -61,10 +61,10 @@ remapPage(allocPage(),0xE0000000); remapPage(allocPage(),(0xE0000000-1)); taskList[-1].id = -1; - taskList[-1].status = AVAILABLE; + taskList[-1].status = EMPTY; for (i=0;iid); - _current->status = AVAILABLE; + _current->status = EMPTY; schedule(); } @@ -127,10 +127,10 @@ void sysCheckPid() { int *ptr; asm("": "=b" (ptr)); - if (taskList[*ptr].status = ACTIVE) { + if ((taskList[*ptr].status != STARTING) && (taskList[*ptr].status != EMPTY)) { *ptr = 1; } else { *ptr = 0; } - } \ No newline at end of file + }