diff --git a/src/bin/init/main.c b/src/bin/init/main.c index abf6e17..35c548f 100755 --- a/src/bin/init/main.c +++ b/src/bin/init/main.c @@ -33,10 +33,11 @@ printf("Sorry This Program Must Be Started By The Kernel!!!!\n"); exit(1); } - printf("Initializing System.\n"); + printf("Initializing System.\n"); startup: i = fork(); if (!i) { + printf("Starting Login Daemon.\n"); exec("login"); printf("Error Starting System\n"); } diff --git a/src/bin/login/main.c b/src/bin/login/main.c index a428977..ad08541 100755 --- a/src/bin/login/main.c +++ b/src/bin/login/main.c @@ -40,8 +40,9 @@ FILE *fd; int shellPid = 0,i = 0x0; char userName[32]; - char passWord[32]; - struct passwd *data = (struct passwd *)malloc(4096); + char passWord[32]; + struct passwd *data = 0x0; + data = (struct passwd *)malloc(4096); if (-1 == (fd = fopen("userdb","r"))) { printf("Error Opening File"); memcpy(data[0].username,"root",4); diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c index f1ecf9d..ce38271 100755 --- a/src/lib/libc/stdlib/malloc.c +++ b/src/lib/libc/stdlib/malloc.c @@ -61,7 +61,7 @@ for (findDesc=(struct memDescriptor *)kernDesc;(findDesc != 0x0);findDesc=(struct memDescriptor *)findDesc->next) { if (findDesc->base == 0) { return(findDesc); - } + } if (findDesc->next == 0) { break; } } tmpDesc = (void *)getPage(); @@ -96,11 +96,10 @@ newDesc = findFreeDesc(); newDesc->page = tmpDesc->page; newDesc->base = tmpDesc->base + len + 1; - newDesc->limit = tmpDesc->limit - len - 1; + newDesc->limit = tmpDesc->limit - len; } tmpDesc->counter = 1; - ret = tmpDesc->base; - break; + return(tmpDesc->base); } if (tmpDesc->page == 0x0) { tmpDesc->page = (void *)getPage(); @@ -110,13 +109,12 @@ newDesc = findFreeDesc(); newDesc->page = tmpDesc->page; newDesc->base = tmpDesc->base + len + 1; - newDesc->limit = 4096 - tmpDesc->limit - 1; - ret = tmpDesc->base; - break; + newDesc->limit = 4096 - tmpDesc->limit; + return(tmpDesc->base); } } } - return(ret); + return(0x0); } @@ -130,4 +128,4 @@ } printf("Error Freeing!!!\n"); return; - } + } \ No newline at end of file diff --git a/src/sys/compile/Makefile b/src/sys/compile/Makefile index e2d1c45..fc60e93 100755 --- a/src/sys/compile/Makefile +++ b/src/sys/compile/Makefile @@ -20,7 +20,7 @@ # Link the kernel statically with fixed text+data address @1M $(KERNEL) : $(OBJS) - $(LD) -o $@ $(OBJS) ../init/*.o ../kernel/*.o ../drivers/*.o ../vmm/*.o ../ubixfs/*.o -Ttext 0x40000 + $(LD) -o $@ $(OBJS) ../init/*.o ../kernel/*.o ../drivers/*.o ../vmm/*.o ../ubixfs/*.o -Ttext 0x30000 /usr/bin/strip $@ # Compile the source files diff --git a/src/sys/kernel/idlethread.c b/src/sys/kernel/idlethread.c index d5a344d..34f30df 100755 --- a/src/sys/kernel/idlethread.c +++ b/src/sys/kernel/idlethread.c @@ -28,9 +28,10 @@ void idleThread() { uLong ticks = 0x0; + while (1); while (1) { ticks++; - if (!ticks%1000) { kprintf("[%i]\n",ticks); } + if (ticks%1000) { kprintf("[%i]\n",ticks); } //checkTasks(); /* Looks for run away proccesses and kills thems */ } } diff --git a/src/sys/kernel/kmalloc.c b/src/sys/kernel/kmalloc.c index 8a8093c..ec0e074 100755 --- a/src/sys/kernel/kmalloc.c +++ b/src/sys/kernel/kmalloc.c @@ -93,7 +93,6 @@ for(tmpDesc=kernDesc;tmpDesc;tmpDesc=tmpDesc->next) { if (tmpDesc->counter == 0) { if (tmpDesc->limit >= len) { - kprintf("Had Page\n"); if (tmpDesc->limit > len+4) { newDesc = findFreeDesc(); newDesc->page = tmpDesc->page; @@ -101,11 +100,9 @@ newDesc->limit = tmpDesc->limit - len; } tmpDesc->counter = 1; - kprintf("[0x%x][0x%x][%i]\n",tmpDesc->page,tmpDesc->base,tmpDesc->limit); return(tmpDesc->base); } else if (tmpDesc->page == 0x0) { - kprintf("Had To Alloc Page\n"); tmpDesc->page = (void *)getFreePage(_current->id); tmpDesc->base = tmpDesc->page; tmpDesc->limit = len; @@ -114,7 +111,6 @@ newDesc->page = tmpDesc->page; newDesc->base = tmpDesc->base + len + 1; newDesc->limit = 4096 - tmpDesc->limit; - kprintf("[0x%x][0x%x][%i]\n",tmpDesc->page,tmpDesc->base,tmpDesc->limit); return(tmpDesc->base); } } diff --git a/src/sys/vmm/memory.c b/src/sys/vmm/memory.c index 23823bf..c833773 100755 --- a/src/sys/vmm/memory.c +++ b/src/sys/vmm/memory.c @@ -171,9 +171,9 @@ void adjustCowCounter(uLong baseAddr,int adjustment) { int memoryMapIndex = (baseAddr/4096); //Adjust COW Counter - kprintf("COW (%i[%i]%x)",memoryMapIndex,memoryMap[memoryMapIndex].cowCounter,baseAddr); + //kprintf("COW (%i[%i]%x)",memoryMapIndex,memoryMap[memoryMapIndex].cowCounter,baseAddr); memoryMap[memoryMapIndex].cowCounter += adjustment; - kprintf("(%i[%i]%x)\n",memoryMapIndex,memoryMap[memoryMapIndex].cowCounter,baseAddr); + //kprintf("(%i[%i]%x)\n",memoryMapIndex,memoryMap[memoryMapIndex].cowCounter,baseAddr); if (memoryMap[memoryMapIndex].cowCounter == 0) { memoryMap[memoryMapIndex].status = memAvail; memoryMap[memoryMapIndex].cowCounter = 0x0; diff --git a/src/sys/vmm/paging.c b/src/sys/vmm/paging.c index 8f9aa57..b347f1f 100755 --- a/src/sys/vmm/paging.c +++ b/src/sys/vmm/paging.c @@ -160,7 +160,8 @@ //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 - memoryMap[pageIndex].status = memAvail; + /* The Ubu Found The Problem */ + //memoryMap[pageIndex].status = memAvail; memoryMap[pageIndex].cowCounter = 0x0; memoryMap[pageIndex].pid = -2; freePages++;