X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fsystem.c;h=aa1cad82eaa55ba2256e5058c68be0d7ca1b8dde;hb=4ebe00546574e97c5316881881f7f2562deea74b;hp=8fc2a1ccea4f8e7348f0a44d9c9bb909452da3fd;hpb=48743e39650eb1ef988380e9d95f27fd40d3a9ce;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/system.c b/KernelLand/Kernel/system.c index 8fc2a1cc..aa1cad82 100644 --- a/KernelLand/Kernel/system.c +++ b/KernelLand/Kernel/system.c @@ -6,12 +6,14 @@ */ #define DEBUG 0 #include +#include // === IMPORTS === extern void Arch_LoadBootModules(void); extern int Modules_LoadBuiltins(void); extern void Modules_SetBuiltinParams(char *Name, char *ArgString); extern void Debug_SetKTerminal(const char *File); +extern void Timer_CallbackThread(void *); // === PROTOTYPES === void System_Init(char *Commandline); @@ -29,6 +31,8 @@ char *argv[32]; // === CODE === void System_Init(char *CommandLine) { + Proc_SpawnWorker(Timer_CallbackThread, NULL); + // Parse Kernel's Command Line System_ParseCommandLine(CommandLine); @@ -41,7 +45,12 @@ void System_Init(char *CommandLine) // - Execute the Config Script Log_Log("Config", "Spawning init '%s'", gsInitBinary); - Proc_Spawn(gsInitBinary); + if(Proc_Clone(CLONE_VM|CLONE_NOUSER) == 0) + { + const char *args[] = {gsInitBinary, 0}; + Proc_Execve(gsInitBinary, args, &args[1], 0); + Log_KernelPanic("System", "Unable to spawn init '%s'", gsInitBinary); + } // Set the debug to be echoed to the terminal Log_Log("Config", "Kernel now echoes to VT7 (Ctrl-Alt-F8)"); @@ -153,7 +162,7 @@ void System_ParseVFS(char *Arg) // - Symbolic Link = if(value[0] == '/') { - Log_Log("Config", "Symbolic link '%s' pointing to '%s'", Arg, value); +// Log_Log("Config", "Symbolic link '%s' pointing to '%s'", Arg, value); VFS_Symlink(Arg, value); } // - Mount =: @@ -168,13 +177,13 @@ void System_ParseVFS(char *Arg) } // Create Mountpoint if( (fd = VFS_Open(Arg, 0)) == -1 ) { - Log_Log("Config", "Creating directory '%s'", Arg, value); +// Log_Log("Config", "Creating directory '%s'", Arg, value); VFS_MkDir( Arg ); } else { VFS_Close(fd); } // Mount - Log_Log("Config", "Mounting '%s' to '%s' ('%s')", dev, Arg, value); +// Log_Log("Config", "Mounting '%s' to '%s' ('%s')", dev, Arg, value); VFS_Mount(dev, Arg, value, ""); } }