mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-19 09:53:01 +00:00
Tools: acrn-manager: add definitions of message sturcts
We define messages into three types, accroding to which component is responsible to handle it: 1. message handled by sos lifecycle service, from vm manager; 2. message handled by vm manager, from sos lifecycle service&dm; 3. message handled by dm, from vm manager. Reviewed-by: Kaige Fu <kaige.fu@intel.com> Reviewed-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Wang, Yu <yu1.wang@intel.com> signed-off-by: Yan Like <like.yan@intel.com> Signed-off-by: Tao Yuhong <yuhong.tao@intel.com>
This commit is contained in:
parent
7d7cf309eb
commit
53ecd932ad
@ -28,6 +28,209 @@ enum msgid {
|
||||
MSG_MAX,
|
||||
};
|
||||
|
||||
/* For test, generate a message who carry a string
|
||||
* eg., VMM_MSG_STR(hello_msg, "Hello\n") will create hello_msg,
|
||||
* then you can write(sock_fd, hello_msg, sizeof(hello_msg))
|
||||
*/
|
||||
#define MNGR_MSG_STR(var, str) \
|
||||
struct mngr_msg_##var { \
|
||||
struct mngr_msg msg; \
|
||||
char raw[sizeof(str)]; \
|
||||
} var = { \
|
||||
.msg = { \
|
||||
.magic = MNGR_MSG_MAGIC, \
|
||||
.msgid = MSG_STR, \
|
||||
.len = sizeof(struct mngr_msg_##var), \
|
||||
}, \
|
||||
.raw = str, \
|
||||
}
|
||||
|
||||
/* DM handled message event types */
|
||||
enum dm_msgid {
|
||||
DM_STOP = MSG_MAX + 1, /* Stop this UOS */
|
||||
DM_SUSPEND, /* Suspend this UOS from running state */
|
||||
DM_RESUME, /* Resume this UOS from suspend state */
|
||||
DM_PAUSE, /* Freeze this virtual machine */
|
||||
DM_CONTINUE, /* Unfreeze this virtual machine */
|
||||
DM_QUERY, /* Ask power state of this UOS */
|
||||
DM_MAX,
|
||||
};
|
||||
|
||||
/* DM handled message req/ack pairs */
|
||||
|
||||
struct req_dm_stop {
|
||||
struct mngr_msg msg; /* req DM_STOP */
|
||||
};
|
||||
|
||||
struct ack_dm_stop {
|
||||
struct mngr_msg msg; /* ack DM_STOP */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_dm_suspend {
|
||||
struct mngr_msg msg; /* req DM_SUSPEND */
|
||||
};
|
||||
|
||||
struct ack_dm_suspend {
|
||||
struct mngr_msg msg; /* ack DM_SUSPEND */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_dm_resume {
|
||||
struct mngr_msg msg; /* req DM_RESUME */
|
||||
int reason;
|
||||
};
|
||||
|
||||
struct ack_dm_resume {
|
||||
struct mngr_msg msg; /* ack DM_RESUME */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_dm_pause {
|
||||
struct mngr_msg msg; /* req DM_PAUSE */
|
||||
};
|
||||
|
||||
struct ack_dm_pause {
|
||||
struct mngr_msg msg; /* ack DM_PAUSE */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_dm_continue {
|
||||
struct mngr_msg msg; /* req DM_CONTINUE */
|
||||
};
|
||||
|
||||
struct ack_dm_continue {
|
||||
struct mngr_msg msg; /* ack DM_CONTINUE */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_dm_query {
|
||||
struct mngr_msg msg; /* req DM_QUERY */
|
||||
};
|
||||
|
||||
struct ack_dm_query {
|
||||
struct mngr_msg msg; /* ack DM_QUERY */
|
||||
int state;
|
||||
};
|
||||
|
||||
/* Acrnd handled message event types */
|
||||
enum acrnd_msgid {
|
||||
/* DM -> Acrnd */
|
||||
ACRND_TIMER = DM_MAX + 1, /* DM request to setup a launch timer */
|
||||
ACRND_REASON, /* DM ask for updating wakeup reason */
|
||||
DM_NOTIFY, /* DM notify Acrnd that state is changed */
|
||||
|
||||
/* SOS-LCS ->Acrnd */
|
||||
ACRND_STOP, /* SOS-LCS request to Stop all UOS */
|
||||
ACRND_RESUME, /* SOS-LCS request to Resume UOS */
|
||||
ACRND_SUSPEND, /* SOS-LCS request to Suspend all UOS */
|
||||
|
||||
ACRND_MAX,
|
||||
};
|
||||
|
||||
/* Acrnd handled message req/ack pairs */
|
||||
|
||||
struct req_acrnd_timer {
|
||||
struct mngr_msg msg; /* req ACRND_TIMER */
|
||||
char name[VMNAME_LEN];
|
||||
time_t t;
|
||||
};
|
||||
|
||||
struct ack_acrnd_timer {
|
||||
struct mngr_msg msg; /* ack ACRND_TIMER */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_acrnd_reason {
|
||||
struct mngr_msg msg; /* req ACRND_REASON */
|
||||
};
|
||||
|
||||
struct ack_acrnd_reason {
|
||||
struct mngr_msg msg; /* ack ACRND_REASON */
|
||||
int reason;
|
||||
};
|
||||
|
||||
struct req_dm_notify {
|
||||
struct mngr_msg msg; /* req DM_NOTIFY */
|
||||
int state;
|
||||
};
|
||||
|
||||
struct ack_dm_notify {
|
||||
struct mngr_msg msg; /* ack DM_NOTIFY */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_acrnd_stop {
|
||||
struct mngr_msg msg; /* req ACRND_STOP */
|
||||
int force;
|
||||
unsigned timeout;
|
||||
};
|
||||
|
||||
struct ack_acrnd_stop {
|
||||
struct mngr_msg msg; /* ack ACRND_STOP */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_acrnd_suspend {
|
||||
struct mngr_msg msg; /* req ACRND_SUSPEND */
|
||||
int force;
|
||||
unsigned timeout;
|
||||
};
|
||||
|
||||
struct ack_acrnd_suspend {
|
||||
struct mngr_msg msg; /* ack ACRND_SUSPEND */
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_acrnd_resume {
|
||||
struct mngr_msg msg; /* req ACRND_RESUME */
|
||||
};
|
||||
|
||||
struct ack_acrnd_resume {
|
||||
struct mngr_msg msg; /* ack ACRND_RESUME */
|
||||
int err;
|
||||
};
|
||||
|
||||
/* SOS-LCS handled message event types */
|
||||
enum sos_lcs_msgid {
|
||||
WAKEUP_REASON = ACRND_MAX + 1, /* Acrnd/Acrnctl request wakeup reason */
|
||||
RTC_TIMER, /* Acrnd request to setup RTC timer */
|
||||
SUSPEND,
|
||||
SHUTDOWN,
|
||||
REBOOT,
|
||||
};
|
||||
|
||||
/* SOS-LCS handled message req/ack pairs */
|
||||
|
||||
struct req_wakeup_reason {
|
||||
struct mngr_msg msg;
|
||||
};
|
||||
|
||||
struct ack_wakeup_reason {
|
||||
struct mngr_msg msg;
|
||||
int reason;
|
||||
};
|
||||
|
||||
struct req_rtc_timer {
|
||||
struct mngr_msg msg;
|
||||
char vmname[VMNAME_LEN];
|
||||
time_t t;
|
||||
};
|
||||
|
||||
struct ack_rtc_timer {
|
||||
struct mngr_msg msg;
|
||||
int err;
|
||||
};
|
||||
|
||||
struct req_power_state {
|
||||
struct mngr_msg msg;
|
||||
};
|
||||
|
||||
struct ack_power_state {
|
||||
struct mngr_msg msg;
|
||||
int err;
|
||||
};
|
||||
|
||||
/* helper functions */
|
||||
#define MNGR_SERVER 1 /* create a server fd, which you can add handlers onto it */
|
||||
#define MNGR_CLIENT 0 /* create a client, just send req and read ack */
|
||||
|
Loading…
Reference in New Issue
Block a user