mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-03-20 07:58:55 +00:00
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
@ -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…
x
Reference in New Issue
Block a user