Trait PetriVmmBackend

Source
pub trait PetriVmmBackend {
    type VmmConfig;
    type VmRuntime: PetriVmRuntime;

    // Required methods
    fn check_compat(firmware: &Firmware, arch: MachineArch) -> bool;
    fn quirks(firmware: &Firmware) -> (GuestQuirksInner, VmmQuirks);
    fn new(resolver: &ArtifactResolver<'_>) -> Self;
    fn run<'life0, 'async_trait>(
        self,
        config: PetriVmConfig,
        modify_vmm_config: Option<impl 'async_trait + FnOnce(Self::VmmConfig) -> Self::VmmConfig + Send>,
        resources: &'life0 PetriVmResources,
    ) -> Pin<Box<dyn Future<Output = Result<Self::VmRuntime>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

Trait for VMM-specific contruction and runtime resources

Required Associated Types§

Source

type VmmConfig

VMM-specific configuration

Source

type VmRuntime: PetriVmRuntime

Runtime object

Required Methods§

Source

fn check_compat(firmware: &Firmware, arch: MachineArch) -> bool

Check whether the combination of firmware and architecture is supported on the VMM.

Source

fn quirks(firmware: &Firmware) -> (GuestQuirksInner, VmmQuirks)

Select backend specific quirks guest and vmm quirks.

Source

fn new(resolver: &ArtifactResolver<'_>) -> Self

Resolve any artifacts needed to use this backend

Source

fn run<'life0, 'async_trait>( self, config: PetriVmConfig, modify_vmm_config: Option<impl 'async_trait + FnOnce(Self::VmmConfig) -> Self::VmmConfig + Send>, resources: &'life0 PetriVmResources, ) -> Pin<Box<dyn Future<Output = Result<Self::VmRuntime>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Create and start VM from the generic config using the VMM backend

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§