pub struct SmpVm {
pub vm_id: u64,
pub vcpus: Vec<VirtualCpu>,
pub max_vcpus: usize,
}Expand description
Multi-vCPU VM
Fields§
§vm_id: u64VM identifier
vcpus: Vec<VirtualCpu>Virtual CPUs
max_vcpus: usizeMaximum vCPUs allowed
Implementations§
Source§impl SmpVm
impl SmpVm
pub fn new(vm_id: u64, vcpu_count: usize) -> Result<Self, VmError>
Sourcepub fn send_ipi(
&mut self,
source: u8,
dest: u8,
mode: IpiDeliveryMode,
vector: u8,
) -> Result<(), VmError>
pub fn send_ipi( &mut self, source: u8, dest: u8, mode: IpiDeliveryMode, vector: u8, ) -> Result<(), VmError>
Send IPI from one vCPU to another
Sourcepub fn startup_ap(&mut self, ap_id: u8, sipi_vector: u8) -> Result<(), VmError>
pub fn startup_ap(&mut self, ap_id: u8, sipi_vector: u8) -> Result<(), VmError>
Emulate the AP startup sequence: BSP sends INIT then SIPI
pub fn vcpu_count(&self) -> usize
pub fn running_vcpu_count(&self) -> usize
Sourcepub fn vcpu(&self, id: u8) -> Option<&VirtualCpu>
pub fn vcpu(&self, id: u8) -> Option<&VirtualCpu>
Get a vCPU by ID
Sourcepub fn vcpu_mut(&mut self, id: u8) -> Option<&mut VirtualCpu>
pub fn vcpu_mut(&mut self, id: u8) -> Option<&mut VirtualCpu>
Get a mutable reference to a vCPU by ID
Sourcepub fn resume_all(&mut self)
pub fn resume_all(&mut self)
Resume all vCPUs