X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fsyscalls.c;h=96f1f854644c389450ae1a02f6d22262d6baddd8;hb=a5759d100ffe700c4f5d42ca21528592382d425c;hp=7a960114b731e5178b9754d46f07b7edc908b7da;hpb=383e0a7b0f5f23bea1b9712abc1060798d20bb3a;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/syscalls.c b/KernelLand/Kernel/syscalls.c index 7a960114..96f1f854 100644 --- a/KernelLand/Kernel/syscalls.c +++ b/KernelLand/Kernel/syscalls.c @@ -72,6 +72,10 @@ void SyscallHandler(tSyscallRegs *Regs) // -- Put the current thread to sleep case SYS_SLEEP: Threads_Sleep(); break; + + case SYS_TIMEDSLEEP: + Time_Delay(Regs->Arg1); + break; // -- Yield current timeslice case SYS_YIELD: Threads_Yield(); break; @@ -199,7 +203,20 @@ void SyscallHandler(tSyscallRegs *Regs) // Path, *Entrypoint ret = Binary_Load((char*)Regs->Arg1, (Uint*)Regs->Arg2); break; - + + // -- Load a kernel module + case SYS_LOADMOD: + CHECK_STR_NONULL( (const char *)Regs->Arg1 ); + if( Threads_GetUID() != 0 ) { + MERR("Not root"); + ret = EACCES; + } + else { + LOG("Module_LoadFile(\"%s\", NULL)", (const char *)Regs->Arg1); + ret = Module_LoadFile( (const char *)Regs->Arg1, NULL ); + } + break; + // --- // Virtual Filesystem // ---