#include <stdarg.h>
#include <stddef.h>
-#define DEBUG(v...) Debug(v)
-//#define DEBUG(v...) do{}while(0)//Debug(v)
+#define DEBUG(v...) do{if(gbSyscallDebugEnabled)Debug(v);}while(0)
#define PAGE_SIZE 4096
#define TODO() Warning("TODO: %s", __func__)
// === GLOBALS ===
int acess__errno;
+ int gbSyscallDebugEnabled = 0;
char *gsExecutablePath = "./ld-acess";
// === CODE ===
return _Syscall(SYS_CHDIR, ">s", Path);
}
-int acess__SysOpen(const char *Path, int Flags)
+int acess__SysOpen(const char *Path, unsigned int Flags)
{
if( strncmp(Path, "$$$$", 4) == 0 )
{
return _Syscall(SYS_IOCTL, ">i >i ?d", fd, id, len, data);
}
int acess__SysFInfo(int fd, t_sysFInfo *info, int maxacls) {
-// DEBUG("offsetof(size, t_sysFInfo) = %i", offsetof(t_sysFInfo, size));
SYSTRACE("_SysFInfo(%i, %p, %i)", fd, info, maxacls);
return _Syscall(SYS_FINFO, ">i <d >i",
fd,
return -1;
}
+// --- System ---
+int acess__SysLoadModule(const char *Path)
+{
+ TODO();
+ return -1;
+}
+
// --- Timekeeping ---
int64_t acess__SysTimestamp(void)
{
int kernel_tid;
int newID;
- newID = _Syscall(SYS_AN_SPAWN, "<d >d >d", sizeof(int), &kernel_tid,
+ newID = _Syscall(SYS_AN_SPAWN, "<d >d >d",
+ sizeof(int), &kernel_tid,
nfd*sizeof(int), fds,
info ? sizeof(*info) : 0, info);
// _Syscall(SYS_SLEEP, "");
//}
+void acess__SysTimedSleep(int64_t Delay)
+{
+ DEBUG("%s(%lli)", __func__, Delay);
+ // Not accurate, but fuck it
+ //if( Delay > 1000 ) sleep(Delay / 1000);
+ //if( Delay % 1000 ) usleep( (Delay % 1000) * 1000 );
+ //_Syscall(SYS_TIMEDSLEEP, ">I", Delay);
+}
+
int acess__SysWaitTID(int TID, int *ExitStatus)
{
DEBUG("%s(%i, %p)", __func__, TID, ExitStatus);
int acess_gettid(void) { return _Syscall(SYS_GETTID, ""); }
int acess__SysGetPID(void) { return _Syscall(SYS_GETPID, ""); }
int acess__SysGetUID(void) { return _Syscall(SYS_GETUID, ""); }
+int acess__SysGetGID(void) { return _Syscall(SYS_GETGID, ""); }
int acess_getgid(void) { return _Syscall(SYS_GETGID, ""); }
int acess__SysSendMessage(int DestTID, int Length, void *Data)