Merge branch 'master' of git://localhost/acess2
[tpg/acess2.git] / AcessNative / syscalls.h
1 /**
2  */
3 #ifndef _NATIVE_SYSCALLS_H_
4 #define _NATIVE_SYSCALLS_H_
5
6 #define SERVER_PORT     0xACE
7
8 /*
9  * Request format
10  * 
11  * tRequestHeader       header
12  * tRequestValue        params[header.NParams]
13  * tRequestValue        retvals[header.NReturn]
14  * uint8_t      paramData[SUM(params[].Lengh)];
15  */
16
17 typedef struct {
18         uint32_t        pid;
19         uint32_t        key;
20 } tRequestAuthHdr;
21
22 typedef struct sRequestValue {
23         /// \see eArgumentTypes
24         uint16_t        Type;
25         uint16_t        Flags;
26         uint32_t        Length;
27 }       tRequestValue;
28
29 typedef struct sRequestHeader {
30         uint16_t        ClientID;
31         uint16_t        CallID; //!< \see eSyscalls
32         uint32_t        MessageLength;
33         uint16_t        NParams;
34         
35         tRequestValue   Params[];
36 }       tRequestHeader;
37
38 enum eSyscalls {
39         SYS_NULL,
40         
41         SYS_EXIT,
42         
43         SYS_OPEN,
44         SYS_CLOSE,
45         SYS_READ,
46         SYS_WRITE,
47         SYS_SEEK,
48         SYS_TELL,
49         SYS_IOCTL,
50         SYS_FINFO,
51         SYS_READDIR,
52         SYS_OPENCHILD,
53         SYS_GETACL,
54         SYS_MOUNT,
55         SYS_REOPEN,
56         SYS_CHDIR,
57         
58         SYS_WAITTID,
59         SYS_SETUID,
60         SYS_SETGID,
61
62         SYS_GETTID,
63         SYS_GETPID,
64         SYS_GETUID,
65         SYS_GETGID,
66
67         // IPC
68         SYS_SLEEP,
69         SYS_AN_FORK,
70         SYS_AN_SPAWN,
71         SYS_SENDMSG,
72         SYS_GETMSG,
73         SYS_SELECT,
74         SYS_WAITEVENT,
75         
76         N_SYSCALLS
77 };
78
79 #ifndef DONT_INCLUDE_SYSCALL_NAMES
80 static const char * casSYSCALL_NAMES[] = {
81         "SYS_NULL",
82         
83         "SYS_EXIT",
84         
85         "SYS_OPEN",
86         "SYS_CLOSE",
87         "SYS_READ",
88         "SYS_WRITE",
89         "SYS_SEEK",
90         "SYS_TELL",
91         "SYS_IOCTL",
92         "SYS_FINFO",
93         "SYS_READDIR",
94         "SYS_OPENCHILD",
95         "SYS_GETACL",
96         "SYS_MOUNT",
97         "SYS_REOPEN",
98         "SYS_CHDIR",
99         
100         "SYS_WAITTID",
101         "SYS_SETUID",
102         "SYS_SETGID",
103         
104         "SYS_GETTID",
105         "SYS_GETPID",
106         "SYS_GETUID",
107         "SYS_GETGID",
108         
109         // IPC
110         "SYS_SLEEP",
111         "SYS_AN_FORK",
112         "SYS_SENDMSG",
113         "SYS_GETMSG",
114         "SYS_SELECT",
115         "SYS_WAITEVENT"
116 };
117 #endif
118
119 enum eArgumentTypes {
120         ARG_TYPE_VOID,
121         ARG_TYPE_INT32,
122         ARG_TYPE_INT64,
123         ARG_TYPE_STRING,
124         ARG_TYPE_DATA
125 };
126 enum eArgumentFlags {
127         ARG_FLAG_RETURN = 0x40, // Pass back in the return message
128         ARG_FLAG_ZEROED = 0x80  // Not present in the message, just fill with zero
129 };
130
131 #endif

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