vmm: Add VM creation and startup helpers
Based on the newly defined Cloud Hypervisor IPC, those helpers send VmCreate and VmStart requests respectively. This will be used by the main thread to create and start a VM based on the CLI parameters. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
151f96e454
commit
e235c6de4f
1 changed files with 38 additions and 0 deletions
|
|
@ -213,6 +213,44 @@ pub fn start_vmm_thread(
|
|||
.map_err(Error::VmmThreadSpawn)
|
||||
}
|
||||
|
||||
pub fn vm_create(
|
||||
api_evt: EventFd,
|
||||
api_sender: Sender<ApiRequest>,
|
||||
config: Arc<VmConfig>,
|
||||
) -> Result<()> {
|
||||
let (response_sender, response_receiver) = channel();
|
||||
|
||||
// Send the VM creation request.
|
||||
api_sender
|
||||
.send(ApiRequest::VmCreate(config, response_sender))
|
||||
.map_err(Error::ApiRequestSend)?;
|
||||
api_evt.write(1).map_err(Error::EventFdWrite)?;
|
||||
|
||||
response_receiver
|
||||
.recv()
|
||||
.map_err(Error::ApiResponseRecv)?
|
||||
.map_err(Error::ApiVmCreate)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn vm_start(api_evt: EventFd, api_sender: Sender<ApiRequest>) -> Result<()> {
|
||||
let (response_sender, response_receiver) = channel();
|
||||
|
||||
// Send the VM start request.
|
||||
api_sender
|
||||
.send(ApiRequest::VmStart(response_sender))
|
||||
.map_err(Error::ApiRequestSend)?;
|
||||
api_evt.write(1).map_err(Error::EventFdWrite)?;
|
||||
|
||||
response_receiver
|
||||
.recv()
|
||||
.map_err(Error::ApiResponseRecv)?
|
||||
.map_err(Error::ApiVmStart)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub struct Vmm {
|
||||
epoll: EpollContext,
|
||||
exit_evt: EventFd,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue