mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-22 13:45:20 +00:00
hypervisor: allow downcasting to hypervisor VM types
Signed-off-by: Wei Liu <liuwe@microsoft.com>
This commit is contained in:
parent
f84ddedb1a
commit
b5270e0b45
@ -837,6 +837,10 @@ impl vm::Vm for KvmVm {
|
|||||||
)
|
)
|
||||||
.map_err(vm::HypervisorVmError::InitMemRegionTdx)
|
.map_err(vm::HypervisorVmError::InitMemRegionTdx)
|
||||||
}
|
}
|
||||||
|
/// Downcast to the underlying KvmVm type
|
||||||
|
fn as_any(&self) -> &dyn Any {
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "tdx")]
|
#[cfg(feature = "tdx")]
|
||||||
|
@ -1212,4 +1212,8 @@ impl vm::Vm for MshvVm {
|
|||||||
fn set_clock(&self, _data: &ClockData) -> vm::Result<()> {
|
fn set_clock(&self, _data: &ClockData) -> vm::Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
/// Downcast to the underlying MshvVm type
|
||||||
|
fn as_any(&self) -> &dyn Any {
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ use crate::UserMemoryRegion;
|
|||||||
use crate::{IoEventAddress, IrqRoutingEntry};
|
use crate::{IoEventAddress, IrqRoutingEntry};
|
||||||
#[cfg(feature = "kvm")]
|
#[cfg(feature = "kvm")]
|
||||||
use kvm_ioctls::Cap;
|
use kvm_ioctls::Cap;
|
||||||
|
use std::any::Any;
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -260,7 +261,7 @@ pub enum InterruptSourceConfig {
|
|||||||
///
|
///
|
||||||
/// This crate provides a hypervisor-agnostic interfaces for Vm
|
/// This crate provides a hypervisor-agnostic interfaces for Vm
|
||||||
///
|
///
|
||||||
pub trait Vm: Send + Sync {
|
pub trait Vm: Send + Sync + Any {
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
/// Sets the address of the one-page region in the VM's address space.
|
/// Sets the address of the one-page region in the VM's address space.
|
||||||
fn set_identity_map_address(&self, address: u64) -> Result<()>;
|
fn set_identity_map_address(&self, address: u64) -> Result<()>;
|
||||||
@ -355,6 +356,8 @@ pub trait Vm: Send + Sync {
|
|||||||
size: u64,
|
size: u64,
|
||||||
measure: bool,
|
measure: bool,
|
||||||
) -> Result<()>;
|
) -> Result<()>;
|
||||||
|
/// Downcast to the underlying hypervisor VM type
|
||||||
|
fn as_any(&self) -> &dyn Any;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VmOps: Send + Sync {
|
pub trait VmOps: Send + Sync {
|
||||||
|
Loading…
Reference in New Issue
Block a user