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§
Sourcetype VmRuntime: PetriVmRuntime
type VmRuntime: PetriVmRuntime
Runtime object
Required Methods§
Sourcefn check_compat(firmware: &Firmware, arch: MachineArch) -> bool
fn check_compat(firmware: &Firmware, arch: MachineArch) -> bool
Check whether the combination of firmware and architecture is supported on the VMM.
Sourcefn quirks(firmware: &Firmware) -> (GuestQuirksInner, VmmQuirks)
fn quirks(firmware: &Firmware) -> (GuestQuirksInner, VmmQuirks)
Select backend specific quirks guest and vmm quirks.
Sourcefn new(resolver: &ArtifactResolver<'_>) -> Self
fn new(resolver: &ArtifactResolver<'_>) -> Self
Resolve any artifacts needed to use this backend
Sourcefn 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,
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.