X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2Finclude%2Facess%2Fsys.h;h=368524a462201f6e6e9d0bd2df538c6f3d98f452;hb=01fbfb424865291e00242681662ed9b20c33a524;hp=62e145e710b818563c2348b8b327faf453229c72;hpb=ac1f47d1946550a734222165148bebd1cb7ff205;p=tpg%2Facess2.git diff --git a/Usermode/include/acess/sys.h b/Usermode/include/acess/sys.h index 62e145e7..368524a4 100644 --- a/Usermode/include/acess/sys.h +++ b/Usermode/include/acess/sys.h @@ -1,20 +1,29 @@ /* * Acess2 System Interface Header */ -#ifndef _SYS_SYS_H_ -#define _SYS_SYS_H_ +#ifndef _ACESS_SYS_H_ +#define _ACESS_SYS_H_ #include +#include // === 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 OPENFLAG_CREATE 0x80 +#ifndef SEEK_CUR +# define SEEK_SET 1 +# define SEEK_CUR 0 +# define SEEK_END -1 +#endif #define CLONE_VM 0x10 +#define GETMSG_IGNORE ((void*)-1) #define FILEFLAG_DIRECTORY 0x10 #define FILEFLAG_SYMLINK 0x20 @@ -26,14 +35,14 @@ struct s_sysACL { unsigned id: 31; }; uint32_t object; - } + }; union { struct { unsigned invert: 1; unsigned perms: 31; }; uint32_t rawperms; - } + }; }; struct s_sysFInfo { uint uid, gid; @@ -48,25 +57,48 @@ struct s_sysFInfo { typedef struct s_sysFInfo t_sysFInfo; typedef struct s_sysACL t_sysACL; +// === VARIABLES === +extern int _errno; + // === FUNCTIONS === -void _SysDebug(char *str, ...); +extern void _SysDebug(const char *format, ...); // --- Proc --- -void sleep(); -void wait(int miliseconds); - int waittid(int id, int *status); - int clone(int flags, void *stack); - int execve(char *path, char **argv, char **envp); +extern void _exit(int status) __attribute__((noreturn)); +extern void sleep(); +extern void yield(); +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(); +extern int getpid(); +extern int _SysSetFaultHandler(int (*Handler)(int)); + +// --- Permissions --- +extern int getuid(); +extern int getgid(); +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); - int readdir(int fd, char *dest); - int _SysGetACL(int fd, t_sysACL *dest); +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 void close(int fd); +extern uint read(int fd, uint length, void *buffer); +extern uint write(int fd, uint length, void *buffer); +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); + +// --- IPC --- +extern int SysSendMessage(pid_t dest, uint length, void *Data); +extern int SysGetMessage(pid_t *src, void *Data); // --- MEMORY --- uint64_t _SysGetPhys(uint vaddr);