707e5bb454daed8de8aa53840c8d4df0faae41ae
[tpg/acess2.git] / Usermode / include / acess / sys.h
1 /*
2  * Acess2 System Interface Header
3  */
4 #ifndef _SYS_SYS_H_
5 #define _SYS_SYS_H_
6
7 #include <stdint.h>
8
9 // === CONSTANTS ===
10 #define OPENFLAG_EXEC   0x01
11 #define OPENFLAG_READ   0x02
12 #define OPENFLAG_WRITE  0x04
13 #define OPENFLAG_NOLINK 0x40
14 #ifndef SEEK_CUR
15 # define SEEK_SET       1
16 # define SEEK_CUR       0
17 # define SEEK_END       -1
18 #endif
19 #define CLONE_VM        0x10
20 #define FILEFLAG_DIRECTORY      0x10
21 #define FILEFLAG_SYMLINK        0x20
22
23 // === TYPES ===
24 struct s_sysACL {
25         union {
26                 struct {
27                         unsigned        group: 1;
28                         unsigned        id:     31;
29                 };
30                 uint32_t        object;
31         };
32         union {
33                 struct {
34                         unsigned        invert: 1;
35                         unsigned        perms:  31;
36                 };
37                 uint32_t        rawperms;
38         };
39 };
40 struct s_sysFInfo {
41         uint    uid, gid;
42         uint    flags;
43         uint64_t        size;
44         uint64_t        atime;
45         uint64_t        mtime;
46         uint64_t        ctime;
47          int    numacls;
48         struct s_sysACL acls[];
49 };
50 typedef struct s_sysFInfo       t_sysFInfo;
51 typedef struct s_sysACL t_sysACL;
52
53 // === FUNCTIONS ===
54 void    _SysDebug(char *str, ...);
55 // --- Proc ---
56 void    _exit(int status)       __attribute__((noreturn));
57 void    sleep();
58 void    wait(int miliseconds);
59  int    waittid(int id, int *status);
60  int    clone(int flags, void *stack);
61  int    execve(char *path, char **argv, char **envp);
62 void    setuid(int id);
63 void    setgid(int id);
64 // --- VFS ---
65  int    chdir(char *dir);
66  int    open(char *path, int flags);
67  int    reopen(int fd, char *path, int flags);
68 void    close(int fd);
69 uint64_t        read(int fd, uint64_t length, void *buffer);
70 uint64_t        write(int fd, uint64_t length, void *buffer);
71  int    seek(int fd, uint64_t offset, int whence);
72  int    ioctl(int fd, int id, void *data);
73  int    finfo(int fd, t_sysFInfo *info, int maxacls);
74  int    readdir(int fd, char *dest);
75  int    _SysGetACL(int fd, t_sysACL *dest);
76
77 // --- MEMORY ---
78 uint64_t        _SysGetPhys(uint vaddr);
79 uint64_t        _SysAllocate(uint vaddr);
80
81 #endif

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