Commit 901ccfb8 authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by Andrei Vagin

infect-rpc: Split into priv and uapi parts

Some pieces from infect-rpc are used by criu's pie code
which will soon be moved into compel std plugin itself,
so prepare for this.
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent 2e944f72
...@@ -11,51 +11,7 @@ extern int compel_rpc_call(unsigned int cmd, struct parasite_ctl *ctl); ...@@ -11,51 +11,7 @@ extern int compel_rpc_call(unsigned int cmd, struct parasite_ctl *ctl);
extern int compel_rpc_call_sync(unsigned int cmd, struct parasite_ctl *ctl); extern int compel_rpc_call_sync(unsigned int cmd, struct parasite_ctl *ctl);
extern int compel_rpc_sock(struct parasite_ctl *ctl); extern int compel_rpc_sock(struct parasite_ctl *ctl);
struct ctl_msg { #define PARASITE_USER_CMDS 64
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,
PARASITE_CMD_UNMAP,
/*
* This must be greater than INITs.
*/
PARASITE_CMD_FINI,
PARASITE_USER_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;
};
struct parasite_unmap_args {
uint64_t parasite_start;
uint64_t parasite_len;
};
#endif #endif
#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,
PARASITE_CMD_UNMAP,
/*
* 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;
};
struct parasite_unmap_args {
uint64_t parasite_start;
uint64_t parasite_len;
};
#endif
...@@ -6,11 +6,14 @@ ...@@ -6,11 +6,14 @@
#include "infect.h" #include "infect.h"
#include "infect-priv.h" #include "infect-priv.h"
#include "infect-rpc.h" #include "infect-rpc.h"
#include "rpc-pie-priv.h"
static int __parasite_send_cmd(int sockfd, struct ctl_msg *m) static int __parasite_send_cmd(int sockfd, struct ctl_msg *m)
{ {
int ret; int ret;
BUILD_BUG_ON(PARASITE_USER_CMDS < __PARASITE_END_CMDS);
ret = send(sockfd, m, sizeof(*m), 0); ret = send(sockfd, m, sizeof(*m), 0);
if (ret == -1) { if (ret == -1) {
pr_perror("Failed to send command %d to daemon", m->cmd); pr_perror("Failed to send command %d to daemon", m->cmd);
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "infect-rpc.h" #include "infect-rpc.h"
#include "infect-priv.h" #include "infect-priv.h"
#include "infect-util.h" #include "infect-util.h"
#include "rpc-pie-priv.h"
#define UNIX_PATH_MAX (sizeof(struct sockaddr_un) - \ #define UNIX_PATH_MAX (sizeof(struct sockaddr_un) - \
(size_t)((struct sockaddr_un *) 0)->sun_path) (size_t)((struct sockaddr_un *) 0)->sun_path)
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "sigframe.h" #include "sigframe.h"
#include "infect-rpc.h" #include "infect-rpc.h"
#include "infect-pie.h" #include "infect-pie.h"
#include "rpc-pie-priv.h"
static int tsock = -1; static int tsock = -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment