AcessNative - Added message length to simplfy message reception
[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_SENDMSG,
71         SYS_GETMSG,
72         SYS_SELECT,
73         SYS_WAITEVENT,
74         
75         N_SYSCALLS
76 };
77
78 #ifndef DONT_INCLUDE_SYSCALL_NAMES
79 static const char * casSYSCALL_NAMES[] = {
80         "SYS_NULL",
81         
82         "SYS_EXIT",
83         
84         "SYS_OPEN",
85         "SYS_CLOSE",
86         "SYS_READ",
87         "SYS_WRITE",
88         "SYS_SEEK",
89         "SYS_TELL",
90         "SYS_IOCTL",
91         "SYS_FINFO",
92         "SYS_READDIR",
93         "SYS_OPENCHILD",
94         "SYS_GETACL",
95         "SYS_MOUNT",
96         "SYS_REOPEN",
97         "SYS_CHDIR",
98         
99         "SYS_WAITTID",
100         "SYS_SETUID",
101         "SYS_SETGID",
102         
103         "SYS_GETTID",
104         "SYS_GETPID",
105         "SYS_GETUID",
106         "SYS_GETGID",
107         
108         // IPC
109         "SYS_SLEEP",
110         "SYS_AN_FORK",
111         "SYS_SENDMSG",
112         "SYS_GETMSG",
113         "SYS_SELECT",
114         "SYS_WAITEVENT"
115 };
116 #endif
117
118 enum eArgumentTypes {
119         ARG_TYPE_VOID,
120         ARG_TYPE_INT32,
121         ARG_TYPE_INT64,
122         ARG_TYPE_STRING,
123         ARG_TYPE_DATA
124 };
125 enum eArgumentFlags {
126         ARG_FLAG_RETURN = 0x40, // Pass back in the return message
127         ARG_FLAG_ZEROED = 0x80  // Not present in the message, just fill with zero
128 };
129
130 #endif

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