Various Changes
[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 GETMSG_IGNORE   ((void*)-1)
21 #define FILEFLAG_DIRECTORY      0x10
22 #define FILEFLAG_SYMLINK        0x20
23
24 // === TYPES ===
25 struct s_sysACL {
26         union {
27                 struct {
28                         unsigned        group: 1;
29                         unsigned        id:     31;
30                 };
31                 uint32_t        object;
32         };
33         union {
34                 struct {
35                         unsigned        invert: 1;
36                         unsigned        perms:  31;
37                 };
38                 uint32_t        rawperms;
39         };
40 };
41 struct s_sysFInfo {
42         uint    uid, gid;
43         uint    flags;
44         uint64_t        size;
45         uint64_t        atime;
46         uint64_t        mtime;
47         uint64_t        ctime;
48          int    numacls;
49         struct s_sysACL acls[];
50 };
51 typedef struct s_sysFInfo       t_sysFInfo;
52 typedef struct s_sysACL t_sysACL;
53
54 // === FUNCTIONS ===
55 extern void     _SysDebug(char *str, ...);
56 // --- Proc ---
57 extern void     _exit(int status)       __attribute__((noreturn));
58 extern void     sleep();
59 extern void     yield();
60 extern void     wait(int miliseconds);
61 extern int      waittid(int id, int *status);
62 extern int      clone(int flags, void *stack);
63 extern int      execve(char *path, char **argv, char **envp);
64 extern int      gettid();
65 extern int      getpid();
66
67 // --- Permissions ---
68 extern int      getuid();
69 extern int      getgid();
70 extern void     setuid(int id);
71 extern void     setgid(int id);
72
73 // --- VFS ---
74 extern int      chdir(char *dir);
75 extern int      open(char *path, int flags);
76 extern int      reopen(int fd, char *path, int flags);
77 extern void     close(int fd);
78 extern uint64_t read(int fd, uint64_t length, void *buffer);
79 extern uint64_t write(int fd, uint64_t length, void *buffer);
80 extern int      seek(int fd, uint64_t offset, int whence);
81 extern uint64_t tell(int fd);
82 extern int      ioctl(int fd, int id, void *data);
83 extern int      finfo(int fd, t_sysFInfo *info, int maxacls);
84 extern int      readdir(int fd, char *dest);
85 extern int      _SysGetACL(int fd, t_sysACL *dest);
86 extern int      _SysMount(char *Device, char *Directory, char *Type, char *Options);
87
88 // --- IPC ---
89 extern int      SysSendMessage(int dest, int length, void *Data);
90 extern int      SysGetMessage(int *src, void *Data);
91
92 // --- MEMORY ---
93 uint64_t        _SysGetPhys(uint vaddr);
94 uint64_t        _SysAllocate(uint vaddr);
95
96 #endif

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