diff --git a/src/sys/init/main.c b/src/sys/init/main.c index 18b72be..7d26940 100755 --- a/src/sys/init/main.c +++ b/src/sys/init/main.c @@ -239,11 +239,9 @@ execThread(idleThread,0xAFFF,"Idle Thread"); execFile("init"); kprintf("Free Pages: [%i]\n",freePages); - /* - outportByte(0x43,0x3C); - outportByte(0x40,((1193180/1000) & 0xFF)); - outportByte(0x40,(((1193180/1000) << 8) & 0xFF)); - */ + //outportByte(0x43,0x36); + //outportByte(0x40,((1193180/1000) & 0xFF)); + //outportByte(0x40,(((1193180/1000) << 8) & 0xFF)); enableIrq(0); while (1); } diff --git a/src/sys/kernel/idlethread.c b/src/sys/kernel/idlethread.c index 34f30df..92fd834 100755 --- a/src/sys/kernel/idlethread.c +++ b/src/sys/kernel/idlethread.c @@ -25,13 +25,17 @@ #include #include #include +#include void idleThread() { - uLong ticks = 0x0; - while (1); + uLong ticks = 0x1; while (1) { ticks++; - if (ticks%1000) { kprintf("[%i]\n",ticks); } + if (ticks == 100000) { + kprintf("[%i]\n",freePages); + ticks = 0x1; + } + //asm("nop"); //checkTasks(); /* Looks for run away proccesses and kills thems */ } } diff --git a/src/sys/kernel/kmalloc.c b/src/sys/kernel/kmalloc.c index ec0e074..9ec846d 100755 --- a/src/sys/kernel/kmalloc.c +++ b/src/sys/kernel/kmalloc.c @@ -41,6 +41,7 @@ int i = 0; struct memDescriptor *tmpDesc = 0x0; kernDesc = (void *)getFreePage(_current->id); + //kprintf("Malloc: [0x%X]\n",getPhysicalAddr(kernDesc)); tmpDesc = kernDesc; for (i=0;i<4096;i+=sizeof(struct memDescriptor)) { tmpDesc->page = 0x0; @@ -67,6 +68,7 @@ if (findDesc->next == 0) { break; } } tmpDesc = (void *)getFreePage(_current->id); + //kprintf("Malloc: [0x%X]\n",getPhysicalAddr(tmpDesc)); findDesc->next = tmpDesc; for (i=0;i<4096;i+=sizeof(struct memDescriptor)) { tmpDesc->page = 0x0; @@ -104,6 +106,7 @@ } else if (tmpDesc->page == 0x0) { tmpDesc->page = (void *)getFreePage(_current->id); + //kprintf("Malloc: [0x%X]\n",getPhysicalAddr(tmpDesc->page)); tmpDesc->base = tmpDesc->page; tmpDesc->limit = len; tmpDesc->counter = 1; diff --git a/src/sys/kernel/schedule.c b/src/sys/kernel/schedule.c index 6e08b27..b88a4e9 100755 --- a/src/sys/kernel/schedule.c +++ b/src/sys/kernel/schedule.c @@ -107,7 +107,6 @@ void schedule() { int i,proc = -1,memAddr; outportByte(0x20, 0x20); - if (paniced == 1) while (1) asm("nop;nop;nop;nop;nop"); diff --git a/src/sys/vmm/paging.c b/src/sys/vmm/paging.c index b347f1f..b7916c4 100755 --- a/src/sys/vmm/paging.c +++ b/src/sys/vmm/paging.c @@ -160,7 +160,10 @@ //Check If Page COW Is Greater Then 0 If It Is Dec It If Not Free It if (memoryMap[pageIndex].cowCounter == 0) { //Set Page As Avail So It Can Be Used Again - /* The Ubu Found The Problem */ + /* + Here Is The Problem Area I Need To Do Some Extencive Testing + As To Why Im Freeing A Page That Shouldnt Be Freed + */ //memoryMap[pageIndex].status = memAvail; memoryMap[pageIndex].cowCounter = 0x0; memoryMap[pageIndex].pid = -2;