diff --git a/src/bin/init/main.c b/src/bin/init/main.c index d527a27..c2b65e5 100755 --- a/src/bin/init/main.c +++ b/src/bin/init/main.c @@ -50,6 +50,6 @@ while(1); } printf("I'm The Parent!\n"); -// while (1); + while (1); exit(1); } \ No newline at end of file diff --git a/src/sys/kernel/fork.c b/src/sys/kernel/fork.c index 33ea3db..68b4e46 100755 --- a/src/sys/kernel/fork.c +++ b/src/sys/kernel/fork.c @@ -28,56 +28,6 @@ /* Main Fork Function */ -pid_t fork() { - int i=0,x=0; - uChar *src,*dst; - uLong *pageDirsrc,*pageTablesrc,*pageDirdst,*pageTabledst; - pid_t cPid = findTask(); //Find An Empty Task - schedule(); - src = (uChar *)&_current->tss; - dst = (uChar *)&taskList[cPid].tss; - for (i=0;itss.cr3; - pageDirdst = (uLong *)allocPage(); - for (i=0;i<1024;i++) { - if (pageDirsrc[i] > 0) { - pageTablesrc = (uLong *)(pageDirsrc[i] & 0xFFFFF000); - pageDirdst[i] = allocPage() | pageDefault; - pageTabledst = (uLong *)(pageDirdst[i] & 0xFFFFF000); - for (x=0;x<1024;x++) { - if (pageTablesrc[x] > 0) { -/* if (((pageTablesrc[x] & 0xFFF) == 7) || ((pageTablesrc[x] & 0xFFF) == 103)) { - kprintf("(%i){%i}",pageTablesrc[x],(pageTablesrc[x] & 0xFFF)); - pageTabledst[x] = pageTablesrc[x]; - } - else { */ - pageTabledst[x] = (pageTablesrc[x] & 0xFFFFF000) | (pagePresent|pageUser);// & 0xFFFFFFD; - /* if ((pageTablesrc[x] & 0xFFF) == 103) { - kprintf("[%i]",pageTablesrc[x]); - pageTabledst[x] = pageTablesrc[x]; - }*/ -// } - } - else { - pageTabledst[x] = 0x0; - } - } - } - else { - pageDirdst[i] = 0x0; - } - } - if (_current->id == cPid) { - return(0); - } - else { - return(cPid); - } - } - void sysFork() { pid_t cPid = findTask(); uLong *pageDirsrc,*pageTablesrc,*stackSrc,*pageDirdst,*pageTabledst,*stackDst; @@ -102,13 +52,12 @@ pageTabledst = (uLong *)(pageDirdst[i] & 0xFFFFF000); for (x=0;x<1024;x++) { if (pageTablesrc[x] > 0) { - if ((i == 1) && (x > 4097)) { - pageTabledst[x] = (pageTablesrc[x] & 0xFFFFF000) | (pagePresent|pageUser); - } - else { - pageTabledst[x] = pageTablesrc[x]; - } - if ((pageTablesrc[x] & 0xFFF) == 103) { + if ((i < 768) && (i>1)) { + kprintf("test"); + pageTabledst[x] = (pageTablesrc[x] & 0xFFFFF000) | (pagePresent|pageUser); + } + else { + pageTabledst[x] = pageTablesrc[x]; } } else {