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

Fields

§disk_index: usize

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

Fields

§add: bool

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

Fields

§socket_addr: String

Register for event notification

§

UnregisterListener

Fields

§socket_addr: String

Unregister for notifications for event

§

Unregister

Fields

§socket_addr: String

Unregister for all event notification

§

SuspendVm

Suspend VM VCPUs and Devices until resume.

§

ResumeVm

Resume VM VCPUs and Devices.

Implementations§

source§

impl VmRequest

source

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 Debug for VmRequest

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for VmRequest

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for VmRequest

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>

Convert 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, Global>) -> Rc<dyn Any, Global>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T, Global>) -> Arc<dyn Any + Sync + Send, Global>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,