/*
* Acess2 System Interface Header
*/
-#ifndef _SYS_SYS_H_
-#define _SYS_SYS_H_
+#ifndef _ACESS_SYS_H_
+#define _ACESS_SYS_H_
#include <stdint.h>
+#include "../sys/types.h"
// === CONSTANTS ===
+#ifndef NULL
+# define NULL ((void*)0)
+#endif
+
#define OPENFLAG_EXEC 0x01
#define OPENFLAG_READ 0x02
#define OPENFLAG_WRITE 0x04
#define OPENFLAG_NOLINK 0x40
-#define SEEK_SET 1
-#define SEEK_CUR 0
-#define SEEK_END -1
-#define CLONE_VM 0x10
+#define OPENFLAG_CREATE 0x80
+#ifndef SEEK_CUR
+# define SEEK_SET 1
+# define SEEK_CUR 0
+# define SEEK_END -1
+#endif
+#define GETMSG_IGNORE ((void*)-1)
#define FILEFLAG_DIRECTORY 0x10
#define FILEFLAG_SYMLINK 0x20
// === TYPES ===
-struct s_sysACL {
- uint32_t object;
- uint32_t perms;
-};
-struct s_sysFInfo {
- uint uid, gid;
- uint flags;
- uint64_t size;
- uint64_t atime;
- uint64_t mtime;
- uint64_t ctime;
- int numacls;
- struct s_sysACL acls[];
-};
-typedef struct s_sysFInfo t_sysFInfo;
+
+// === VARIABLES ===
+extern int _errno;
// === FUNCTIONS ===
-void _SysDebug(char *str, ...);
+extern void _SysDebug(const char *format, ...);
// --- Proc ---
-void sleep();
- int clone(int flags, void *stack);
- int execve(char *path, char **argv, char **envp);
+extern void _exit(int status) __attribute__((noreturn));
+extern void sleep(void);
+extern void yield(void);
+extern int kill(int pid, int sig);
+extern void wait(int miliseconds);
+extern int waittid(int id, int *status);
+extern int clone(int flags, void *stack);
+extern int execve(char *path, char **argv, char **envp);
+extern int gettid(void);
+extern int getpid(void);
+extern int _SysSetFaultHandler(int (*Handler)(int));
+extern void SysSetName(const char *Name);
+//extern int SysGetName(const char *Name);
+
+// --- Permissions ---
+extern int getuid(void);
+extern int getgid(void);
+extern void setuid(int id);
+extern void setgid(int id);
+
// --- VFS ---
- int open(char *path, int flags);
- int reopen(int fd, char *path, int flags);
-void close(int fd);
-uint64_t read(int fd, uint64_t length, void *buffer);
-uint64_t write(int fd, uint64_t length, void *buffer);
- int seek(int fd, uint64_t offset, int whence);
- int ioctl(int fd, int id, void *data);
- int finfo(int fd, t_sysFInfo *info, int maxacls);
+extern int chdir(const char *dir);
+extern int open(const char *path, int flags);
+extern int reopen(int fd, const char *path, int flags);
+extern int close(int fd);
+extern uint read(int fd, void *buffer, uint length);
+extern uint write(int fd, const void *buffer, uint length);
+extern int seek(int fd, int64_t offset, int whence);
+extern uint64_t tell(int fd);
+extern int ioctl(int fd, int id, void *data);
+extern int finfo(int fd, t_sysFInfo *info, int maxacls);
+extern int readdir(int fd, char *dest);
+extern int _SysOpenChild(int fd, char *name, int flags);
+extern int _SysGetACL(int fd, t_sysACL *dest);
+extern int _SysMount(const char *Device, const char *Directory, const char *Type, const char *Options);
+extern int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errfds, time_t *timeout);
+
+// --- IPC ---
+extern int SysSendMessage(pid_t dest, uint length, const void *Data);
+extern int SysGetMessage(pid_t *src, void *Data);
// --- MEMORY ---
uint64_t _SysGetPhys(uint vaddr);