// === CODE ===
// --- VFS Calls
-int acess_chdir(const char *Path)
+int acess__SysChdir(const char *Path)
{
return _Syscall(SYS_CHDIR, ">s", Path);
}
-int acess_open(const char *Path, int Flags)
+int acess__SysOpen(const char *Path, int Flags)
{
if( strncmp(Path, "$$$$", 4) == 0 )
{
return _Syscall(SYS_OPEN, ">s >i", Path, Flags);
}
-void acess_close(int FD) {
+void acess__SysClose(int FD)
+{
if(FD & NATIVE_FILE_MASK) {
return native_close(FD & (NATIVE_FILE_MASK-1));
}
_Syscall(SYS_CLOSE, ">i", FD);
}
-int acess_reopen(int FD, const char *Path, int Flags) {
+int acess__SysReopen(int FD, const char *Path, int Flags) {
DEBUG("reopen(0x%x, \"%s\", 0x%x)", FD, Path, Flags);
return _Syscall(SYS_REOPEN, ">i >s >i", FD, Path, Flags);
}
-size_t acess_read(int FD, void *Dest, size_t Bytes) {
+size_t acess__SysRead(int FD, void *Dest, size_t Bytes) {
if(FD & NATIVE_FILE_MASK)
return native_read(FD & (NATIVE_FILE_MASK-1), Dest, Bytes);
// if( FD > 2 )
return _Syscall(SYS_READ, ">i >i <d", FD, Bytes, Bytes, Dest);
}
-size_t acess_write(int FD, const void *Src, size_t Bytes) {
+size_t acess__SysWrite(int FD, const void *Src, size_t Bytes) {
if(FD & NATIVE_FILE_MASK)
return native_write(FD & (NATIVE_FILE_MASK-1), Src, Bytes);
// if( FD > 2 )
return _Syscall(SYS_WRITE, ">i >i >d", FD, Bytes, Bytes, Src);
}
-int acess_seek(int FD, int64_t Ofs, int Dir) {
+int acess__SysSeek(int FD, int64_t Ofs, int Dir)
+{
if(FD & NATIVE_FILE_MASK) {
return native_seek(FD & (NATIVE_FILE_MASK-1), Ofs, Dir);
}
return _Syscall(SYS_SEEK, ">i >I >i", FD, Ofs, Dir);
}
-uint64_t acess_tell(int FD) {
+uint64_t acess__SysTell(int FD)
+{
if(FD & NATIVE_FILE_MASK)
return native_tell( FD & (NATIVE_FILE_MASK-1) );
DEBUG("tell(0x%x)", FD);
return _Syscall(SYS_TELL, ">i", FD);
}
-int acess_ioctl(int fd, int id, void *data) {
+int acess__SysIOCtl(int fd, int id, void *data) {
int len;
DEBUG("ioctl(%i, %i, %p)", fd, id, data);
// NOTE: The length here is hacky and could break
len = PAGE_SIZE - ((uintptr_t)data % PAGE_SIZE);
return _Syscall(SYS_IOCTL, ">i >i ?d", fd, id, len, data);
}
-int acess_finfo(int fd, t_sysFInfo *info, int maxacls) {
+int acess__SysFInfo(int fd, t_sysFInfo *info, int maxacls) {
// DEBUG("offsetof(size, t_sysFInfo) = %i", offsetof(t_sysFInfo, size));
DEBUG("finfo(%i, %p, %i)", fd, info, maxacls);
return _Syscall(SYS_FINFO, ">i <d >i",
);
}
-int acess_SysReadDir(int fd, char *dest) {
+int acess__SysReadDir(int fd, char *dest) {
DEBUG("SysReadDir(%i, %p)", fd, dest);
return _Syscall(SYS_READDIR, ">i <d", fd, 256, dest);
}
events
);
}
-
-int acess_select(int nfds, fd_set *read, fd_set *write, fd_set *error, int64_t *timeout)
+int acess__SysUnlink(const char *pathname)
{
- return acess__SysSelect(nfds, read, write, error, timeout, 0);
+ // TODO:
+ return 0;
}
-
int acess__SysOpenChild(int fd, char *name, int flags) {
DEBUG("_SysOpenChild(0x%x, '%s', 0x%x)", fd, name, flags);
return _Syscall(SYS_OPENCHILD, ">i >s >i", fd, name, flags);
return 0;
}
+void acess__SysSetName(const char *Name)
+{
+ // TODO:
+}
+
+int acess__SysGetName(char *NameDest)
+{
+ // TODO:
+ return 0;
+}
+
+int acess__SysSetPri(int Priority)
+{
+ // TODO:
+ return 0;
+}
+
+// --- Binaries? ---
+void *acess_SysLoadBin(const char *path, void **entry)
+{
+ // ERROR!
+ return NULL;
+}
+
+int acess__SysUnloadBin(void *base)
+{
+ // ERROR!
+ return -1;
+}
+
+// --- Timekeeping ---
+int64_t acess__SysTimestamp(void)
+{
+ // TODO: Better impl
+// return now()*1000;
+ return 0;
+}
+
// --- Memory Management ---
+uint64_t acess__SysGetPhys(uintptr_t vaddr)
+{
+ // TODO:
+ return 0;
+}
+
uint64_t acess__SysAllocate(uintptr_t vaddr)
{
if( AllocateMemory(vaddr, 0x1000) == -1 ) // Allocate a page
}
// --- Process Management ---
-int acess_clone(int flags, void *stack)
+int acess__SysClone(int flags, void *stack)
{
#ifdef __WIN32__
Warning("Win32 does not support anything like fork(2), cannot emulate");
#endif
}
-int acess_execve(char *path, char **argv, const char **envp)
+int acess__SysKill(int pid, int sig)
+{
+ // TODO: Impliment SysKill
+ return -1;
+}
+
+int acess__SysExecVE(char *path, char **argv, const char **envp)
{
int i, argc;
return kernel_tid;
}
-void acess_sleep(void)
-{
- DEBUG("%s()", __func__);
- _Syscall(SYS_SLEEP, "");
-}
+//void acess_sleep(void)
+//{
+// DEBUG("%s()", __func__);
+// _Syscall(SYS_SLEEP, "");
+//}
-int acess_waittid(int TID, int *ExitStatus)
+int acess__SysWaitTID(int TID, int *ExitStatus)
{
DEBUG("%s(%i, %p)", __func__, TID, ExitStatus);
return _Syscall(SYS_WAITTID, ">i <d", TID, sizeof(int), &ExitStatus);
int acess_getuid(void) { return _Syscall(SYS_GETUID, ""); }
int acess_getgid(void) { return _Syscall(SYS_GETGID, ""); }
-int acess_SysSendMessage(int DestTID, int Length, void *Data)
+int acess__SysSendMessage(int DestTID, int Length, void *Data)
{
DEBUG("%s(%i, 0x%x, %p)", __func__, DestTID, Length, Data);
return _Syscall(SYS_SENDMSG, ">i >d", DestTID, Length, Data);
}
-int acess_SysGetMessage(int *SourceTID, int BufLen, void *Data)
+int acess__SysGetMessage(int *SourceTID, int BufLen, void *Data)
{
DEBUG("%s(%p, %p)", __func__, SourceTID, Data);
return _Syscall(SYS_GETMSG, "<d <d",
// === Symbol List ===
-#define DEFSYM(name) {#name, &acess_##name}
+#ifndef DEFSYM
+# define DEFSYM(name) {#name, &acess_##name}
+#endif
const tSym caBuiltinSymbols[] = {
DEFSYM(_exit),
- DEFSYM(chdir),
- DEFSYM(open),
- DEFSYM(close),
- DEFSYM(reopen),
- DEFSYM(read),
- DEFSYM(write),
- DEFSYM(seek),
- DEFSYM(tell),
- DEFSYM(ioctl),
- DEFSYM(finfo),
- DEFSYM(SysReadDir),
- DEFSYM(select),
+ DEFSYM(_SysChdir),
+ DEFSYM(_SysOpen),
DEFSYM(_SysOpenChild),
+ DEFSYM(_SysReopen),
+ DEFSYM(_SysClose),
+ DEFSYM(_SysRead),
+ DEFSYM(_SysWrite),
+ DEFSYM(_SysSeek),
+ DEFSYM(_SysTell),
+ DEFSYM(_SysIOCtl),
+ DEFSYM(_SysFInfo),
+ DEFSYM(_SysReadDir),
DEFSYM(_SysGetACL),
DEFSYM(_SysMount),
DEFSYM(_SysSelect),
- DEFSYM(clone),
- DEFSYM(execve),
+ DEFSYM(_SysClone),
+ DEFSYM(_SysExecVE),
DEFSYM(_SysSpawn),
- DEFSYM(sleep),
+// DEFSYM(sleep),
- DEFSYM(waittid),
+ DEFSYM(_SysWaitTID),
DEFSYM(gettid),
DEFSYM(setuid),
DEFSYM(setgid),
DEFSYM(getuid),
DEFSYM(getgid),
- DEFSYM(SysSendMessage),
- DEFSYM(SysGetMessage),
+ DEFSYM(_SysSendMessage),
+ DEFSYM(_SysGetMessage),
DEFSYM(_SysAllocate),
DEFSYM(_SysSetMemFlags),