Big rewrite of AxWin to get it to compile and run
[tpg/acess2.git] / Usermode / include / 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 <sys/types.h>
9
10 // === CONSTANTS ===
11 #ifndef NULL
12 # define NULL   ((void*)0)
13 #endif
14
15 #define OPENFLAG_EXEC   0x01
16 #define OPENFLAG_READ   0x02
17 #define OPENFLAG_WRITE  0x04
18 #define OPENFLAG_NOLINK 0x40
19 #define OPENFLAG_CREATE 0x80
20 #ifndef SEEK_CUR
21 # define SEEK_SET       1
22 # define SEEK_CUR       0
23 # define SEEK_END       -1
24 #endif
25 #define CLONE_VM        0x10
26 #define GETMSG_IGNORE   ((void*)-1)
27 #define FILEFLAG_DIRECTORY      0x10
28 #define FILEFLAG_SYMLINK        0x20
29
30 // === TYPES ===
31 struct s_sysACL {
32         union {
33                 struct {
34                         unsigned        group: 1;
35                         unsigned        id:     31;
36                 };
37                 uint32_t        object;
38         };
39         union {
40                 struct {
41                         unsigned        invert: 1;
42                         unsigned        perms:  31;
43                 };
44                 uint32_t        rawperms;
45         };
46 };
47 struct s_sysFInfo {
48         uint    uid, gid;
49         uint    flags;
50         uint64_t        size;
51         uint64_t        atime;
52         uint64_t        mtime;
53         uint64_t        ctime;
54          int    numacls;
55         struct s_sysACL acls[];
56 };
57 typedef struct s_sysFInfo       t_sysFInfo;
58 typedef struct s_sysACL t_sysACL;
59
60 // === VARIABLES ===
61 extern int      _errno;
62
63 // === FUNCTIONS ===
64 extern void     _SysDebug(char *str, ...);
65 // --- Proc ---
66 extern void     _exit(int status)       __attribute__((noreturn));
67 extern void     sleep();
68 extern void     yield();
69 extern void     wait(int miliseconds);
70 extern int      waittid(int id, int *status);
71 extern int      clone(int flags, void *stack);
72 extern int      execve(char *path, char **argv, char **envp);
73 extern int      gettid();
74 extern int      getpid();
75 extern int      _SysSetFaultHandler(int (*Handler)(int));
76
77 // --- Permissions ---
78 extern int      getuid();
79 extern int      getgid();
80 extern void     setuid(int id);
81 extern void     setgid(int id);
82
83 // --- VFS ---
84 extern int      chdir(const char *dir);
85 extern int      open(const char *path, int flags);
86 extern int      reopen(int fd, const char *path, int flags);
87 extern void     close(int fd);
88 extern uint     read(int fd, uint length, void *buffer);
89 extern uint     write(int fd, uint length, void *buffer);
90 extern int      seek(int fd, int64_t offset, int whence);
91 extern uint64_t tell(int fd);
92 extern int      ioctl(int fd, int id, void *data);
93 extern int      finfo(int fd, t_sysFInfo *info, int maxacls);
94 extern int      readdir(int fd, char *dest);
95 extern int      _SysOpenChild(int fd, char *name, int flags);
96 extern int      _SysGetACL(int fd, t_sysACL *dest);
97 extern int      _SysMount(const char *Device, const char *Directory, const char *Type, const char *Options);
98
99 // --- IPC ---
100 extern int      SysSendMessage(pid_t dest, uint length, void *Data);
101 extern int      SysGetMessage(pid_t *src, void *Data);
102
103 // --- MEMORY ---
104 uint64_t        _SysGetPhys(uint vaddr);
105 uint64_t        _SysAllocate(uint vaddr);
106
107 #endif

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