diff --git a/src/bin/init/main.c b/src/bin/init/main.c index da11cc2..bf42608 100755 --- a/src/bin/init/main.c +++ b/src/bin/init/main.c @@ -40,10 +40,10 @@ exit(1); } printf("Initializing system.\n"); - while (1); if (!fork()) { - exec("shell"); + //exec("shell"); while(1); } + while(1); exit(1); } \ No newline at end of file diff --git a/src/sys/include/vmm/memory.h b/src/sys/include/vmm/memory.h index 0326236..b2c627d 100755 --- a/src/sys/include/vmm/memory.h +++ b/src/sys/include/vmm/memory.h @@ -37,6 +37,7 @@ extern mMap *memoryMap; extern int numPages; +extern int freePages; int countMemory(); unsigned long findFreePage(int pid); diff --git a/src/sys/init/main.c b/src/sys/init/main.c index 03903f4..7b5a341 100755 --- a/src/sys/init/main.c +++ b/src/sys/init/main.c @@ -85,16 +85,17 @@ int main() { initMmap(); //Initialize Memory Map clearScreen(); //Clear The Screen - outputVersion(); //Display Version Info + outputVersion(); //Display Version Info initPagingSystem(); //Initialize Paging System init8259(); //Initialize PIC initIdt(); //Initialize IDT initKeyboard(); //Initialize Keyboard - initScheduler(); //Initialize Scheduler + initScheduler(); //Initialize Scheduler initFloppy(); //Initialize Floppy Controller initUbixFS(); //Initialize File System - execThread(idleThread,0xAFFF,"Idle Thread"); + execThread(idleThread,0xAFFF,"Idle Thread"); execFile("init"); + kprintf("Free Pages: [%i]\n",freePages); enableIrq(0); while (1); } diff --git a/src/sys/kernel/fork.c b/src/sys/kernel/fork.c index 179ad86..c181641 100755 --- a/src/sys/kernel/fork.c +++ b/src/sys/kernel/fork.c @@ -37,12 +37,13 @@ asm("":"=b" (ret)); schedule(); src = (uChar *)&_current->tss; - dst = (uChar *)&taskList[cPid].tss; + dst = (uChar *)&newProcess->tss; for (i=0;iid = cPid; + newProcess->status = READY; + while(1); pageDirsrc = (uLong *)_current->tss.cr3; // pageDirdst = (uLong *)allocPage(); taskList[cPid].tss.cr3 = (long)pageDirdst; diff --git a/src/sys/vmm/memory.c b/src/sys/vmm/memory.c index 2e6ef52..bba0b1e 100755 --- a/src/sys/vmm/memory.c +++ b/src/sys/vmm/memory.c @@ -27,6 +27,7 @@ mMap *memoryMap = (mMap *) 0x101000; int numPages = 0; +int freePages = 1; int countMemory() { register unsigned long *mem; @@ -94,7 +95,7 @@ } void initMmap() { - int i=0; + int i=0,memStart=0; numPages = countMemory(); memoryMap = (mMap *) 0x101000; for (i=0;i