diff --git a/src/sys/init/main.c b/src/sys/init/main.c index 6f7be5f..b7e1717 100755 --- a/src/sys/init/main.c +++ b/src/sys/init/main.c @@ -107,5 +107,5 @@ //outportByteP(0x40,((1193180/1000) & 0x00FF)); //outportByte(0x40,(((1193180/1000) >> 8) & 0x00FF)); enableIrq(0); - while (1); + asm("hlt"); } diff --git a/src/sys/kernel/fork.c b/src/sys/kernel/fork.c index 805b388..cfc701e 100755 --- a/src/sys/kernel/fork.c +++ b/src/sys/kernel/fork.c @@ -74,7 +74,7 @@ : "g" (newProcess->tss.esp), "g" (newProcess->tss.ebp) ); newProcess->tss.cr3 = (long)copyVirtualSpace(newProcess->id); - newProcess->status = READY; + newProcess->status = 0x1; childStart: if (ret == 0) { asm("":"=b" (ret)); diff --git a/src/sys/kernel/schedule.c b/src/sys/kernel/schedule.c index 7ade282..7427b27 100755 --- a/src/sys/kernel/schedule.c +++ b/src/sys/kernel/schedule.c @@ -49,9 +49,11 @@ kTask_t *taskList = (kTask_t *)0xE0800000; kTask_t *_current = 0x0,*_usedMath = 0x0; +char *tmp = 0x0; + extern union descriptorTableunion GDT[7]; extern int testVal; - + int switches = 0; uint8_t paniced = 0; @@ -146,20 +148,19 @@ /* if (chooseTask >= numTasks) { chooseTask = 0; } */ - kprintf("chooseTask: [%i]\n",chooseTask); + kprintf("chooseTask: [%i][0x%X]\n",chooseTask,getTask(chooseTask)); while ((getTask(chooseTask)->status != READY) && (getTask(chooseTask)->status != RUNNING) && (loopCount < 4)) { -// while (((getTask(chooseTask)->status != READY) || (getTask(chooseTask)->status != RUNNING)) && (loopCount < 4)) { - kprintf("Status: [%i][%i][%i]\n",getTask(chooseTask)->status,READY,RUNNING); + //kprintf("Status: [%i][%i][%i]\n",getTask(chooseTask)->status,READY,RUNNING); chooseTask++; chooseTask %= numTasks; if (chooseTask == 0) loopCount++; - kprintf("Trying: %d\n", chooseTask); - kprintf("numtasks: %d\n", numTasks); + //kprintf("Trying: %d\n", chooseTask); + //kprintf("numtasks: %d\n", numTasks); } if (loopCount == 4) chooseTask = -1; - kprintf("Found one %d\n", chooseTask); + //kprintf("Found one %d\n", chooseTask); if (chooseTask != -1) { if (getTask(chooseTask)->status == RUNNING) { getTask(chooseTask)->status = READY; @@ -177,7 +178,7 @@ spinlockUnlock(&schedSpinlock, CURRENT_CPU); //kprintf("Spinlock complete\n"); //kprintf("<id,numTasks); + //kprintf("ID: [%i][%i][%i]\n",_current->id,numTasks,currentProc); asm("ljmp $0x20,$0\n"); } spinlockUnlock(&schedSpinlock, CURRENT_CPU); @@ -255,13 +256,9 @@ if (queue->magic_number != schedMagicNumber) return; temp = (struct waitQueueNode *) kmalloc(sizeof(struct waitQueueNode)); - //kprintf("from malloc %08x\n", temp); - kprintf("Ye.\n"); kmemset(temp, '\0', sizeof(struct waitQueueNode)); - //kprintf("Yo.\n"); temp->prev = temp->next = NULL; - if (queue->first == NULL) { - //kprintf("head was NULL.\n"); + if (queue->first == NULL) {; queue->first = queue->last = temp; } else { @@ -269,12 +266,9 @@ temp->prev = queue->last; queue->last = temp; } - //kprintf("Data: [%i]\n",data); temp->data = data; temp->id = id; - //kprintf("Queue head = %08x\n", queue->first); - //kprintf("Queue tail = %08x\n", queue->last); - //kprintf("Sizeof = %d\n", sizeof(waitQueue_t)); + kprintf("Insert Addr: [0x%X]\n",data); return; } @@ -321,18 +315,17 @@ if (queue->first == NULL) return NULL; temp = queue->first; - //kprintf (">>while\n"); - while ((temp->id != id) && (temp->next != NULL)) { + kprintf (">>while\n"); + while ((temp->id != id) && (temp != NULL)) { + kprintf("Id: [%i]\n",temp->id); //while (temp->id != id) { //kprintf("id = %d\n", id); //kprintf("temp->id: %d\n", temp->id); //kprintf("temp->next: %08x\n", temp->next); temp = temp->next; } - //while(1) - // ; - //kprintf("Out Of Loop: [%i][%i]\n",temp,temp->id); - //kprintf("<id); + kprintf("<id == id) { return(temp->data); }