pub struct VmSnapshot {
pub header: SnapshotHeader,
pub regions: Vec<SnapshotRegionDescriptor>,
pub vmcs_states: Vec<SerializedVmcs>,
pub register_states: Vec<GuestRegisters>,
pub msr_states: Vec<Vec<MsrEntry>>,
pub lapic_states: Vec<LapicSnapshot>,
pub memory_page_indices: Vec<u64>,
pub device_states: Vec<DeviceStateBlob>,
}Expand description
Complete VM snapshot (in-memory representation)
Fields§
§header: SnapshotHeaderSnapshot header
regions: Vec<SnapshotRegionDescriptor>Region descriptors
vmcs_states: Vec<SerializedVmcs>Serialized VMCS per vCPU
register_states: Vec<GuestRegisters>General register state per vCPU
msr_states: Vec<Vec<MsrEntry>>MSR values per vCPU
lapic_states: Vec<LapicSnapshot>LAPIC state per vCPU (serialized as raw register values)
memory_page_indices: Vec<u64>Dirty page indices (pages included in snapshot)
device_states: Vec<DeviceStateBlob>Device state blobs
Implementations§
Source§impl VmSnapshot
impl VmSnapshot
Sourcepub fn new(
vm_id: u64,
vcpu_count: u32,
memory_pages: u64,
timestamp: u64,
) -> Self
pub fn new( vm_id: u64, vcpu_count: u32, memory_pages: u64, timestamp: u64, ) -> Self
Create a new empty snapshot
Sourcepub fn add_register_state(&mut self, vcpu_idx: u32, regs: GuestRegisters)
pub fn add_register_state(&mut self, vcpu_idx: u32, regs: GuestRegisters)
Add register state for a vCPU
Sourcepub fn add_vmcs_state(&mut self, vcpu_idx: u32, vmcs: SerializedVmcs)
pub fn add_vmcs_state(&mut self, vcpu_idx: u32, vmcs: SerializedVmcs)
Add VMCS state for a vCPU
Sourcepub fn add_msr_state(&mut self, vcpu_idx: u32, msrs: Vec<MsrEntry>)
pub fn add_msr_state(&mut self, vcpu_idx: u32, msrs: Vec<MsrEntry>)
Add MSR state for a vCPU
Sourcepub fn add_lapic_state(&mut self, vcpu_idx: u32, lapic: &VirtualLapic)
pub fn add_lapic_state(&mut self, vcpu_idx: u32, lapic: &VirtualLapic)
Add LAPIC state for a vCPU
Sourcepub fn add_memory_page(&mut self, page_index: u64)
pub fn add_memory_page(&mut self, page_index: u64)
Add a memory page to the snapshot
Sourcepub fn add_device_state(&mut self, name: String, data: Vec<u8>)
pub fn add_device_state(&mut self, name: String, data: Vec<u8>)
Add device state blob