Usermode/libc - Fix strchr and strrchr behavior
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / include_exp / acess / sys.h
1 /*
2  * Acess2 System Interface Header
3  */
4 #ifndef _ACESS_SYS_H_
5 #define _ACESS_SYS_H_
6
7 #include <stdint.h>
8 #include <stddef.h>     // size_t
9 #include "syscall_types.h"
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 // === CONSTANTS ===
16 #ifndef NULL
17 # define NULL   ((void*)0)
18 #endif
19
20 #define THREAD_EVENT_VFS        0x0001
21 #define THREAD_EVENT_IPCMSG     0x0002
22 #define THREAD_EVENT_SIGNAL     0x0004
23
24 #define OPENFLAG_EXEC   0x01
25 #define OPENFLAG_READ   0x02
26 #define OPENFLAG_WRITE  0x04
27 #define OPENFLAG_RDWR   (OPENFLAG_READ|OPENFLAG_WRITE)
28 #define OPENFLAG_TRUNCATE       0x10
29 #define OPENFLAG_APPEND 0x20
30 #define OPENFLAG_NOLINK 0x40
31 #define OPENFLAG_CREATE 0x80
32 #define OPENFLAG_NONBLOCK       0x100   // How would this work?
33 #ifndef SEEK_CUR
34 # define SEEK_SET       1
35 # define SEEK_CUR       0
36 # define SEEK_END       -1
37 #endif
38 #define GETMSG_IGNORE   ((void*)-1)
39 #define FILEFLAG_DIRECTORY      0x10
40 #define FILEFLAG_SYMLINK        0x20
41 #define CLONE_VM        0x10
42
43 #define MMAP_PROT_READ  0x001   //!< Readable memory
44 #define MMAP_PROT_WRITE 0x002   //!< Writable memory
45 #define MMAP_PROT_EXEC  0x004   //!< Executable memory
46 #define MMAP_MAP_SHARED         0x001   //!< Shared with all other users of the FD
47 #define MMAP_MAP_PRIVATE        0x002   //!< Local (COW) copy
48 #define MMAP_MAP_FIXED          0x004   //!< Load to a fixed address
49 #define MMAP_MAP_ANONYMOUS      0x008   //!< Not associated with a FD
50
51 #ifdef ARCHDIR_is_native
52 # include "_native_syscallmod.h"
53 #endif
54
55 // === TYPES ===
56
57 // === VARIABLES ===
58 extern int      _errno;
59
60 // === FUNCTIONS ===
61 extern void     _SysDebug(const char *format, ...);
62 extern void     _SysDebugHex(const char *Label, const void *Data, size_t Size);
63 // --- Proc ---
64 extern void     _exit(int status)       __attribute__((noreturn));
65 extern int      _SysKill(int pid, int sig);
66 extern int      _SysWaitEvent(int EventMask);
67 extern int      _SysWaitTID(int id, int *status);
68 extern int      _SysClone(int flags, void *stack);
69 extern int      _SysExecVE(const char *path, char **argv, char **envp);
70 extern int      _SysSpawn(const char *Path, const char **argv, const char **envp, int nFDs, int *FDs, struct s_sys_spawninfo *info);
71 extern int      gettid(void);
72 extern int      _SysGetPID(void);
73 extern int      _SysSetFaultHandler(int (*Handler)(int));
74 extern void     _SysSetName(const char *Name);
75 extern int      _SysGetName(char *NameDest);
76 extern int      _SysSetPri(int Priority);
77 // --- System ---
78 extern int      _SysLoadModule(const char *Module);
79 // --- Timekeeping ---
80 extern int64_t  _SysTimestamp(void);
81 extern void     _SysTimedSleep(int64_t Delay);
82
83 // --- Permissions ---
84 extern int      _SysGetUID(void);
85 extern int      _SysGetGID(void);
86 extern int      setuid(int id);
87 extern int      setgid(int id);
88
89 // --- VFS ---
90 extern int      _SysChdir(const char *dir);
91 extern int      _SysChroot(const char *dir);
92
93 extern int      _SysOpen(const char *path, int flags, ...);
94 extern int      _SysOpenChild(int fd, const char *name, int flags);
95 extern int      _SysOpenPipe(int *read, int *write, int flags);
96 extern int      _SysReopen(int fd, const char *path, int flags);
97 extern int      _SysCopyFD(int srcfd, int dstfd);
98 extern int      _SysFDFlags(int fd, int mask, int newflags);
99 extern size_t   _SysRead(int fd, void *buffer, size_t length);
100 extern size_t   _SysReadAt(int fd, uint64_t offset, size_t length, void *buffer);
101 extern uint64_t _SysTruncate(int fd, uint64_t size);
102 extern int      _SysClose(int fd);
103 extern int      _SysFDCtl(int fd, int option, ...);
104 extern size_t   _SysWrite(int fd, const void *buffer, size_t length);
105 extern size_t   _SysWriteAt(int fd, uint64_t offset, size_t length, const void *buffer);
106 extern int      _SysSeek(int fd, int64_t offset, int whence);
107 extern uint64_t _SysTell(int fd);
108 extern int      _SysIOCtl(int fd, int id, void *data);
109 extern int      _SysFInfo(int fd, t_sysFInfo *info, int maxacls);
110 extern int      _SysReadDir(int fd, char *dest);
111 extern int      _SysGetACL(int fd, t_sysACL *dest);
112 extern int      _SysMount(const char *Device, const char *Directory, const char *Type, const char *Options);
113 extern int      _SysSelect(int nfds, fd_set *read, fd_set *write, fd_set *err, int64_t *timeout, unsigned int extraevents);
114 //#define select(nfs, rdfds, wrfds, erfds, timeout)     _SysSelect(nfs, rdfds, wrfds, erfds, timeout, 0)
115 extern int      _SysMkDir(const char *dirname);
116 extern int      _SysUnlink(const char *pathname);
117 extern void*    _SysMMap(void *addr, size_t length, unsigned int _flags, int fd, uint64_t offset);
118 #ifdef _SysMMap
119 # undef _SysMMap
120 # define _SysMMap(addr,length,flags,prot,fd,offset)     acess__SysMMap(addr,length,(flags|(prot<<16)), fd, offset)
121 #else
122 # define _SysMMap(addr,length,flags,prot,fd,offset)     _SysMMap(addr,length,(flags|(prot<<16)), fd, offset)
123 #endif
124 extern int      _SysMUnMap(void *addr, size_t length);
125 extern uint64_t _SysMarshalFD(int FD);
126 extern int      _SysUnMarshalFD(uint64_t Handle);
127
128 // --- IPC ---
129 extern int      _SysSendMessage(int dest, size_t length, const void *Data);
130 extern int      _SysGetMessage(int *src, size_t buflen, void *Data);
131
132 // --- MEMORY ---
133 extern uint64_t _SysGetPhys(uintptr_t vaddr);
134 extern uint64_t _SysAllocate(uintptr_t vaddr);
135 extern uint32_t _SysSetMemFlags(uintptr_t vaddr, uint32_t flags, uint32_t mask);
136 extern void     *_SysLoadBin(const char *path, void **entry);
137 extern int      _SysUnloadBin(void *base);
138 extern void     SysSetFaultHandler(int (*Hanlder)(int));
139
140 #ifdef __cplusplus
141 }
142 #endif
143
144 #endif

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