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

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