pub struct VirtualCpu {
pub id: u8,
pub state: VcpuState,
pub registers: GuestRegisters,
pub apic_id: u8,
pub pending_ipis: Vec<IpiMessage>,
pub is_bsp: bool,
pub host_affinity: Option<u32>,
pub sipi_vector: u8,
pub vmcs_fields: BTreeMap<u32, u64>,
}Expand description
Virtual CPU
Fields§
§id: u8vCPU ID (0 = BSP, 1+ = APs)
state: VcpuStateCurrent execution state
registers: GuestRegistersGeneral-purpose registers
apic_id: u8LAPIC ID for this vCPU
pending_ipis: Vec<IpiMessage>Pending IPIs (queue)
is_bsp: boolWhether this is the bootstrap processor
host_affinity: Option<u32>Host thread affinity (which host CPU to schedule on)
sipi_vector: u8SIPI vector (real-mode entry = vector * 0x1000)
vmcs_fields: BTreeMap<u32, u64>VMCS field values for this vCPU
Implementations§
Source§impl VirtualCpu
impl VirtualCpu
pub fn new(id: u8, is_bsp: bool) -> Self
Sourcepub fn deliver_ipi(&mut self, ipi: IpiMessage)
pub fn deliver_ipi(&mut self, ipi: IpiMessage)
Deliver an IPI to this vCPU
Sourcepub fn pop_ipi(&mut self) -> Option<IpiMessage>
pub fn pop_ipi(&mut self) -> Option<IpiMessage>
Pop next pending IPI
Sourcepub fn set_affinity(&mut self, host_cpu: u32)
pub fn set_affinity(&mut self, host_cpu: u32)
Set host CPU affinity for scheduling