diff --git a/src/sys/include/ubixos/fork.h b/src/sys/include/ubixos/fork.h index bed5ba8..27d7be5 100755 --- a/src/sys/include/ubixos/fork.h +++ b/src/sys/include/ubixos/fork.h @@ -24,6 +24,8 @@ #ifndef _FORK_H #define _FORK_H -int fork(); +#include + +pid_t fork(); #endif diff --git a/src/sys/include/ubixos/types.h b/src/sys/include/ubixos/types.h index ce83f48..9478033 100755 --- a/src/sys/include/ubixos/types.h +++ b/src/sys/include/ubixos/types.h @@ -33,6 +33,9 @@ typedef unsigned short uShort; typedef unsigned int uInt; +//Fork Typedef +typedef int pid_t; + #ifndef _STDLIB_H_ #ifndef FALSE typedef enum { FALSE=0,TRUE=1 } bool; diff --git a/src/sys/init/main.c b/src/sys/init/main.c index 90cd04c..f74e6f0 100755 --- a/src/sys/init/main.c +++ b/src/sys/init/main.c @@ -73,6 +73,10 @@ while(1); } +void test() { + while (1); + } + int main() { clearScreen(); outputVersion(); //Display Version Info @@ -86,7 +90,7 @@ initUbixFS(); execThread(idleThread,0xAFFF,"Idle Thread"); //execFile("shell"); - //execThread(test,0xCFFF,"Test"); + execThread(test,0xCFFF,"Test"); /* while(1) { fd = fopen("COPYRIGHT",1); diff --git a/src/sys/kernel/fork.c b/src/sys/kernel/fork.c index 46958cc..022f9dc 100755 --- a/src/sys/kernel/fork.c +++ b/src/sys/kernel/fork.c @@ -22,7 +22,31 @@ **************************************************************************************/ #include +#include +#include +#include -int fork() { - //Test + +/* Main Fork Function */ +pid_t fork() { + int i=0; + uChar *src,*dst; + pid_t cPid = findTask(); //Find An Empty Task + kprintf("Pid: [%i]\n",cPid); + src = _current; + dst = &taskList[cPid]; + for (i=0;istatus,taskList[cPid].status); + if (_current->id == cPid) { + return(0); + } + else { + return(cPid); + } } \ No newline at end of file diff --git a/src/sys/kernel/idlethread.c b/src/sys/kernel/idlethread.c index b7da336..fbde021 100755 --- a/src/sys/kernel/idlethread.c +++ b/src/sys/kernel/idlethread.c @@ -28,10 +28,12 @@ void idleThread() { /* This thread is for maintinance */ if (!fork()) { - execFile("init"); + while (1) { + kprintf("A"); + } } while (1) { - //kprintf("^"); + kprintf("B"); //checkTasks(); /* Looks for run away proccesses and kills thems */ } }