2 * Acess2 System Interface Header
8 #include <stddef.h> // size_t
9 #include "syscall_types.h"
13 # define NULL ((void*)0)
16 #define THREAD_EVENT_VFS 0x0001
17 #define THREAD_EVENT_IPCMSG 0x0002
18 #define THREAD_EVENT_SIGNAL 0x0004
20 #define OPENFLAG_EXEC 0x01
21 #define OPENFLAG_READ 0x02
22 #define OPENFLAG_WRITE 0x04
23 #define OPENFLAG_RDWR (OPENFLAG_READ|OPENFLAG_WRITE)
24 #define OPENFLAG_TRUNCATE 0x10
25 #define OPENFLAG_APPEND 0x20
26 #define OPENFLAG_NOLINK 0x40
27 #define OPENFLAG_CREATE 0x80
33 #define GETMSG_IGNORE ((void*)-1)
34 #define FILEFLAG_DIRECTORY 0x10
35 #define FILEFLAG_SYMLINK 0x20
38 #ifdef ARCHDIR_is_native
39 # include "_native_syscallmod.h"
48 extern void _SysDebug(const char *format, ...);
50 extern void _exit(int status) __attribute__((noreturn));
51 extern int _SysKill(int pid, int sig);
52 extern int _SysWaitEvent(int EventMask);
53 extern int _SysWaitTID(int id, int *status);
54 extern int _SysClone(int flags, void *stack);
55 extern int _SysExecVE(const char *path, char **argv, char **envp);
56 extern int _SysSpawn(const char *Path, const char **argv, const char **envp, int nFDs, int *FDs, struct s_sys_spawninfo *info);
57 extern int gettid(void);
58 extern int _SysGetPID(void);
59 extern int _SysSetFaultHandler(int (*Handler)(int));
60 extern void _SysSetName(const char *Name);
61 extern int _SysGetName(char *NameDest);
62 extern int _SysSetPri(int Priority);
63 // --- Timekeeping ---
64 extern int64_t _SysTimestamp(void);
66 // --- Permissions ---
67 extern int _SysGetUID(void);
68 extern int _SysGetGID(void);
69 extern void setuid(int id);
70 extern void setgid(int id);
73 extern int _SysChdir(const char *dir);
74 extern int _SysChroot(const char *dir);
76 extern int _SysOpen(const char *path, int flags, ...);
77 extern int _SysOpenChild(int fd, const char *name, int flags);
78 extern int _SysOpenPipe(int *read, int *write, int flags);
79 extern int _SysReopen(int fd, const char *path, int flags);
80 extern int _SysCopyFD(int srcfd, int dstfd);
81 extern int _SysFDFlags(int fd, int mask, int newflags);
82 extern size_t _SysRead(int fd, void *buffer, size_t length);
83 extern int _SysClose(int fd);
84 extern int _SysFDCtl(int fd, int option, ...);
85 extern size_t _SysWrite(int fd, const void *buffer, size_t length);
86 extern int _SysSeek(int fd, int64_t offset, int whence);
87 extern uint64_t _SysTell(int fd);
88 extern int _SysIOCtl(int fd, int id, void *data);
89 extern int _SysFInfo(int fd, t_sysFInfo *info, int maxacls);
90 extern int _SysReadDir(int fd, char *dest);
91 extern int _SysGetACL(int fd, t_sysACL *dest);
92 extern int _SysMount(const char *Device, const char *Directory, const char *Type, const char *Options);
93 extern int _SysSelect(int nfds, fd_set *read, fd_set *write, fd_set *err, int64_t *timeout, unsigned int extraevents);
94 //#define select(nfs, rdfds, wrfds, erfds, timeout) _SysSelect(nfs, rdfds, wrfds, erfds, timeout, 0)
95 extern int _SysUnlink(const char *pathname);
98 extern int _SysSendMessage(int dest, size_t length, const void *Data);
99 extern int _SysGetMessage(int *src, size_t buflen, void *Data);
102 extern uint64_t _SysGetPhys(uintptr_t vaddr);
103 extern uint64_t _SysAllocate(uintptr_t vaddr);
104 extern uint32_t _SysSetMemFlags(uintptr_t vaddr, uint32_t flags, uint32_t mask);
105 extern void *_SysLoadBin(const char *path, void **entry);
106 extern int _SysUnloadBin(void *base);
107 extern void SysSetFaultHandler(int (*Hanlder)(int));