Enum vm_control::VmRequest
source · pub enum VmRequest {
Show 24 variants
Exit,
Powerbtn,
Sleepbtn,
Rtc,
SuspendVcpus,
Swap(SwapCommand),
ResumeVcpus,
Gpe(u32),
PciPme(u16),
MakeRT,
BalloonCommand(BalloonControlCommand),
DiskCommand {
disk_index: usize,
command: DiskControlCommand,
},
UsbCommand(UsbControlCommand),
GpuCommand(GpuControlCommand),
BatCommand(BatteryType, BatControlCommand),
HotPlugVfioCommand {
device: HotPlugDeviceInfo,
add: bool,
},
HotPlugNetCommand(NetControlCommand),
Snapshot(SnapshotCommand),
Restore(RestoreCommand),
RegisterListener {
socket_addr: String,
event: RegisteredEvent,
},
UnregisterListener {
socket_addr: String,
event: RegisteredEvent,
},
Unregister {
socket_addr: String,
},
SuspendVm,
ResumeVm,
}
Expand description
A request to the main process to perform some operation on the VM.
Unless otherwise noted, each request should expect a VmResponse::Ok
to be received on success.
Variants§
Exit
Break the VM’s run loop and exit.
Powerbtn
Trigger a power button event in the guest.
Sleepbtn
Trigger a sleep button event in the guest.
Rtc
Trigger a RTC interrupt in the guest.
SuspendVcpus
Suspend the VM’s VCPUs until resume.
Swap(SwapCommand)
Swap the memory content into files on a disk
ResumeVcpus
Resume the VM’s VCPUs that were previously suspended.
Gpe(u32)
Inject a general-purpose event.
PciPme(u16)
Inject a PCI PME
MakeRT
Make the VM’s RT VCPU real-time.
BalloonCommand(BalloonControlCommand)
Command for balloon driver.
DiskCommand
Send a command to a disk chosen by disk_index
.
disk_index
is a 0-based count of --disk
, --rwdisk
, and -r
command-line options.
UsbCommand(UsbControlCommand)
Command to use controller.
GpuCommand(GpuControlCommand)
Command to modify the gpu.
BatCommand(BatteryType, BatControlCommand)
Command to set battery.
HotPlugVfioCommand
Command to add/remove multiple vfio-pci devices
HotPlugNetCommand(NetControlCommand)
Command to add/remove network tap device as virtio-pci device
Snapshot(SnapshotCommand)
Command to Snapshot devices
Restore(RestoreCommand)
Command to Restore devices
RegisterListener
Register for event notification
UnregisterListener
Unregister for notifications for event
Unregister
Unregister for all event notification
SuspendVm
Suspend VM VCPUs and Devices until resume.
ResumeVm
Resume VM VCPUs and Devices.
Implementations§
source§impl VmRequest
impl VmRequest
sourcepub fn execute(
&self,
run_mode: &mut Option<VmRunMode>,
disk_host_tubes: &[Tube],
pm: &mut Option<Arc<Mutex<dyn PmResource + Send>>>,
gpu_control_tube: Option<&Tube>,
usb_control_tube: Option<&Tube>,
bat_control: &mut Option<BatControl>,
kick_vcpus: impl Fn(VcpuControl),
kick_vcpu: impl Fn(VcpuControl, usize),
force_s2idle: bool,
swap_controller: Option<&SwapController>,
device_control_tube: &Tube,
vcpu_size: usize,
irq_handler_control: &Tube,
snapshot_irqchip: impl Fn() -> Result<Value>,
restore_irqchip: impl FnMut(Value) -> Result<()>
) -> VmResponse
pub fn execute(
&self,
run_mode: &mut Option<VmRunMode>,
disk_host_tubes: &[Tube],
pm: &mut Option<Arc<Mutex<dyn PmResource + Send>>>,
gpu_control_tube: Option<&Tube>,
usb_control_tube: Option<&Tube>,
bat_control: &mut Option<BatControl>,
kick_vcpus: impl Fn(VcpuControl),
kick_vcpu: impl Fn(VcpuControl, usize),
force_s2idle: bool,
swap_controller: Option<&SwapController>,
device_control_tube: &Tube,
vcpu_size: usize,
irq_handler_control: &Tube,
snapshot_irqchip: impl Fn() -> Result<Value>,
restore_irqchip: impl FnMut(Value) -> Result<()>
) -> VmResponse
Executes this request on the given Vm and other mutable state.
This does not return a result, instead encapsulating the success or failure in a
VmResponse
with the intended purpose of sending the response back over the socket that
received this VmRequest
.
Trait Implementations§
source§impl<'de> Deserialize<'de> for VmRequest
impl<'de> Deserialize<'de> for VmRequest
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl RefUnwindSafe for VmRequest
impl Send for VmRequest
impl Sync for VmRequest
impl Unpin for VmRequest
impl UnwindSafe for VmRequest
Blanket Implementations§
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.