X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Fsyscalls.h;h=d2e8e91ece2238ddac8b42e2f35f5d8502bd50fb;hb=bbace1ebc0a53c9b8c561de6a3a2d9955fcdab0b;hp=2784fd02359b3f118559597e30e2ef445f22b14d;hpb=602ba046995f564d8ca4b85c873cbfcafed72d42;p=tpg%2Facess2.git diff --git a/AcessNative/syscalls.h b/AcessNative/syscalls.h index 2784fd02..d2e8e91e 100644 --- a/AcessNative/syscalls.h +++ b/AcessNative/syscalls.h @@ -3,11 +3,63 @@ #ifndef _NATIVE_SYSCALLS_H_ #define _NATIVE_SYSCALLS_H_ +#define SERVER_PORT 0xACE + +#define SYSCALL_TRACE 1 + +#if SYSCALL_TRACE +#define SYSTRACE(str, x...) Debug(str, x) +#else +#define SYSTRACE(...) do{}while(0) +#endif + +/* + * Request format + * + * tRequestHeader header + * tRequestValue params[header.NParams] + * tRequestValue retvals[header.NReturn] + * uint8_t paramData[SUM(params[].Lengh)]; + */ + +typedef struct { + uint32_t pid; + uint32_t key; +} tRequestAuthHdr; + +typedef struct sRequestValue { + /// \see eArgumentTypes + uint16_t Type; + uint16_t Flags; + uint32_t Length; +} tRequestValue; + +typedef struct sRequestHeader { + uint32_t ClientID; + uint32_t MessageLength; + uint16_t CallID; //!< \see eSyscalls + uint16_t NParams; + + tRequestValue Params[]; +} __attribute__((packed)) tRequestHeader; + + enum eSyscalls { - SYS_NULL, - SYS_OPEN + #define _(n) n + #include "syscalls_list.h" + #undef _ + N_SYSCALLS }; +#ifndef DONT_INCLUDE_SYSCALL_NAMES +static const char * casSYSCALL_NAMES[] = { + #define _(n) #n + #include "syscalls_list.h" + #undef _ + "-" +}; +#endif + enum eArgumentTypes { ARG_TYPE_VOID, ARG_TYPE_INT32, @@ -15,9 +67,9 @@ enum eArgumentTypes { ARG_TYPE_STRING, ARG_TYPE_DATA }; - -#define ARG_DIR_TOSRV 0x10 -#define ARG_DIR_TOCLI 0x20 -#define ARG_DIR_BOTH 0x30 +enum eArgumentFlags { + ARG_FLAG_RETURN = 0x40, // Pass back in the return message + ARG_FLAG_ZEROED = 0x80 // Not present in the message, just fill with zero +}; #endif