pub enum VmRequest {
Show 23 variants Exit, Powerbtn, Sleepbtn, Rtc { clear_evt: Event, }, SuspendVcpus, Swap(SwapCommand), ResumeVcpus, Gpe { gpe: u32, clear_evt: Option<Event>, }, 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), 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

Fields

§clear_evt: Event

Trigger a RTC interrupt in the guest. When the irq associated with the RTC is resampled, it will be re-asserted as long as clear_evt is not signaled.

§

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

Fields

§gpe: u32
§clear_evt: Option<Event>

Inject a general-purpose event. If clear_evt is provided, when the irq associated with the GPE is resampled, it will be re-asserted as long as clear_evt is not signaled.

§

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

§

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, vm: &impl Vm, 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), force_s2idle: bool, swap_controller: Option<&SwapController>, device_control_tube: &Tube, vcpu_size: usize, irq_handler_control: &Tube, snapshot_irqchip: impl Fn() -> Result<Value> ) -> 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 T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

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

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

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 T
where T: Any + Send + Sync,

§

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

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 T
where 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 T
where 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 T
where 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 T
where T: for<'de> Deserialize<'de>,