#include <mono/io-layer/wapi-private.h>
typedef enum {
+ WapiHandleRequestType_Error,
WapiHandleRequestType_New,
WapiHandleRequestType_Open,
WapiHandleRequestType_Close,
WapiHandleRequestType_Scratch,
WapiHandleRequestType_ScratchFree,
WapiHandleRequestType_ProcessFork,
+ WapiHandleRequestType_ProcessKill,
+ WapiHandleRequestType_GetOrSetShare,
+ WapiHandleRequestType_SetShare
} WapiHandleRequestType;
typedef struct
typedef struct
{
guint32 cmd;
- guint32 args;
guint32 env;
guint32 dir;
guint32 stdin_handle;
guint32 flags;
} WapiHandleRequest_ProcessFork;
+typedef struct {
+ pid_t pid;
+ gint32 signo;
+} WapiHandleRequest_ProcessKill;
+
+typedef struct
+{
+ dev_t device;
+ ino_t inode;
+ guint32 new_sharemode;
+ guint32 new_access;
+} WapiHandleRequest_GetOrSetShare;
+
+typedef struct
+{
+ dev_t device;
+ ino_t inode;
+ guint32 sharemode;
+ guint32 access;
+} WapiHandleRequest_SetShare;
+
typedef struct
{
WapiHandleRequestType type;
WapiHandleRequest_Scratch scratch;
WapiHandleRequest_ScratchFree scratch_free;
WapiHandleRequest_ProcessFork process_fork;
+ WapiHandleRequest_ProcessKill process_kill;
+ WapiHandleRequest_GetOrSetShare get_or_set_share;
+ WapiHandleRequest_SetShare set_share;
} u;
} WapiHandleRequest;
WapiHandleResponseType_Scratch,
WapiHandleResponseType_ScratchFree,
WapiHandleResponseType_ProcessFork,
+ WapiHandleResponseType_ProcessKill,
+ WapiHandleResponseType_GetOrSetShare,
+ WapiHandleResponseType_SetShare
} WapiHandleResponseType;
typedef struct
typedef struct
{
guint32 idx;
+ gboolean remap;
} WapiHandleResponse_Scratch;
typedef struct
guint32 tid;
} WapiHandleResponse_ProcessFork;
+typedef struct
+{
+ guint32 err;
+} WapiHandleResponse_ProcessKill;
+
+typedef struct
+{
+ gboolean exists;
+ guint32 sharemode;
+ guint32 access;
+} WapiHandleResponse_GetOrSetShare;
+
+typedef struct
+{
+ guint32 dummy;
+} WapiHandleResponse_SetShare;
+
typedef struct
{
WapiHandleResponseType type;
WapiHandleResponse_Scratch scratch;
WapiHandleResponse_ScratchFree scratch_free;
WapiHandleResponse_ProcessFork process_fork;
+ WapiHandleResponse_ProcessKill process_kill;
+ WapiHandleResponse_GetOrSetShare get_or_set_share;
+ WapiHandleResponse_SetShare set_share;
} u;
} WapiHandleResponse;
extern void _wapi_daemon_request_response (int fd, WapiHandleRequest *req,
WapiHandleResponse *resp);
-extern void _wapi_daemon_request (int fd, WapiHandleRequest *req);
-extern void _wapi_daemon_response (int fd, WapiHandleResponse *resp);
+extern void _wapi_daemon_request_response_with_fds (int fd,
+ WapiHandleRequest *req,
+ WapiHandleResponse *resp,
+ int in_fd, int out_fd,
+ int err_fd);
+extern int _wapi_daemon_request (int fd, WapiHandleRequest *req, int *fds,
+ gboolean *has_fds);
+extern int _wapi_daemon_response (int fd, WapiHandleResponse *resp);
#endif /* _WAPI_DAEMON_MESSAGES_H_ */