Merge branch 'master' of git://git.ucc.asn.au/tpg/acess2
[tpg/acess2.git] / AcessNative / acesskernel_src / syscalls.c
index 7932cca..58dc801 100644 (file)
@@ -7,6 +7,7 @@
 #define DEBUG  1
 #include <acess.h>
 #include <threads.h>
+#include <events.h>
 #include "../syscalls.h"
 
 // === IMPORTS ===
@@ -177,6 +178,11 @@ SYSCALL1(Syscall_SetGID, "i", int,
        return Threads_SetGID(a0);
 );
 
+SYSCALL0(Syscall_GetTID, return Threads_GetTID());
+SYSCALL0(Syscall_GetPID, return Threads_GetPID());
+SYSCALL0(Syscall_GetUID, return Threads_GetUID());
+SYSCALL0(Syscall_GetGID, return Threads_GetGID());
+
 SYSCALL1(Syscall_AN_Fork, "d", int *,
        if(Sizes[0] < sizeof(int))
                return -1;
@@ -184,6 +190,20 @@ SYSCALL1(Syscall_AN_Fork, "d", int *,
        return *a0;
 );
 
+SYSCALL2(Syscall_SendMessage, "id", int, void *,
+       return Proc_SendMessage(a0, Sizes[1], a1);
+);
+
+SYSCALL2(Syscall_GetMessage, "dd", Uint *, void *,
+       if( Sizes[0] < sizeof(*a0) )
+               return -1;
+       return Proc_GetMessage(a0, a1);
+);
+
+SYSCALL1(Syscall_WaitEvent, "i", int,
+       return Threads_WaitEvents(a0);
+);
+
 const tSyscallHandler  caSyscalls[] = {
        Syscall_Null,
        Syscall_Exit,
@@ -206,12 +226,18 @@ const tSyscallHandler     caSyscalls[] = {
        Syscall_SetUID,
        Syscall_SetGID,
        
+       Syscall_GetTID,
+       Syscall_GetPID,
+       Syscall_GetUID,
+       Syscall_GetGID,
+
        Syscall_Sleep,
        Syscall_AN_Fork,
 
-       NULL,
-       NULL,
-       Syscall_select
+       Syscall_SendMessage,
+       Syscall_GetMessage,
+       Syscall_select,
+       Syscall_WaitEvent
 };
 const int      ciNumSyscalls = sizeof(caSyscalls)/sizeof(caSyscalls[0]);
 /**
@@ -367,7 +393,7 @@ tRequestHeader *SyscallRecieve(tRequestHeader *Request, int *ReturnLength)
                ret->Params[retValueCount].Flags = 0;
                ret->Params[retValueCount].Length = Request->Params[i].Length;
                
-               LOG("Syscalls", "Ret %i: Type %i, Len %i",
+               LOG("Ret %i: Type %i, Len %i",
                        i, Request->Params[i].Type, Request->Params[i].Length);
                
                memcpy(inData, returnData[i], Request->Params[i].Length);

UCC git Repository :: git.ucc.asn.au