#include <hal_proc.h>
#include <errno.h>
#include <threads.h>
+#include <events.h>
#define CHECK_NUM_NULLOK(v,size) \
if((v)&&!Syscall_Valid((size),(v))){ret=-1;err=-EINVAL;break;}
err = -ENOSYS;
ret = -1;
break;
-
+
+ // -- Wait fr an event
+ case SYS_WAITEVENT:
+ // Message mask
+ ret = Threads_WaitEvents(Regs->Arg1);
+ break;
+
// -- Wait for a thread
case SYS_WAITTID:
// Sanity Check (Status can be NULL)
{
tmp = (char**)Regs->Arg3;
CHECK_NUM_NONULL(tmp, sizeof(char**));
- Log("tmp = %p", tmp);
for(i=0;tmp[i];i++) {
CHECK_NUM_NONULL( &tmp[i], sizeof(char*) );
CHECK_STR_NONULL( tmp[i] );
(fd_set *)Regs->Arg3, // Write
(fd_set *)Regs->Arg4, // Errors
(tTime *)Regs->Arg5, // Timeout
+ (Uint32)Regs->Arg6, // Extra wakeup events
0 // User handles
);
break;
//#if DEBUG_BUILD
case SYS_DEBUG:
CHECK_STR_NONULL( (char*)Regs->Arg1 );
- LogF("Log: [%i] ", Threads_GetTID());
+ LogF("Log: %08lli [%i] ", now(), Threads_GetTID());
LogF((const char*)Regs->Arg1,
Regs->Arg2, Regs->Arg3, Regs->Arg4, Regs->Arg5, Regs->Arg6);
LogF("\r\n");