#ifndef __COMPEL_RPC_H__ #define __COMPEL_RPC_H__ struct ctl_msg { uint32_t cmd; /* command itself */ uint32_t ack; /* ack on command */ int32_t err; /* error code on reply */ }; #define ctl_msg_cmd(_cmd) \ (struct ctl_msg) \ { \ .cmd = _cmd, \ } #define ctl_msg_ack(_cmd, _err) \ (struct ctl_msg) \ { \ .cmd = _cmd, .ack = _cmd, .err = _err, \ } /* * NOTE: each command's args should be arch-independed sized. * If you want to use one of the standard types, declare * alternative type for compatible tasks in parasite-compat.h */ enum { PARASITE_CMD_IDLE = 0, PARASITE_CMD_ACK, PARASITE_CMD_INIT_DAEMON, /* * This must be greater than INITs. */ PARASITE_CMD_FINI, __PARASITE_END_CMDS, }; struct parasite_init_args { int32_t h_addr_len; struct sockaddr_un h_addr; int32_t log_level; uint64_t sigreturn_addr; uint64_t sigframe; /* pointer to sigframe */ futex_t daemon_connected; #ifdef ARCH_HAS_LONG_PAGES uint32_t page_size; #endif }; struct parasite_unmap_args { uint64_t parasite_start; uint64_t parasite_len; }; #endif