Skip to main content

GuestMemory

Trait GuestMemory 

Source
pub trait GuestMemory: Send + Sync {
    // Required methods
    fn read(
        &self,
        addr: GuestAddress,
        buf: &mut [u8],
    ) -> Result<(), HypervisorError>;
    fn write(
        &self,
        addr: GuestAddress,
        buf: &[u8],
    ) -> Result<(), HypervisorError>;
    fn get_host_address(
        &self,
        addr: GuestAddress,
    ) -> Result<*mut u8, HypervisorError>;
    fn size(&self) -> u64;
    fn enable_dirty_tracking(&mut self) -> Result<(), HypervisorError>;
    fn disable_dirty_tracking(&mut self) -> Result<(), HypervisorError>;
    fn get_dirty_pages(&mut self) -> Result<Vec<DirtyPageInfo>, HypervisorError>;
    fn dump_all(&self, buf: &mut [u8]) -> Result<(), HypervisorError>;
}
Expand description

Guest memory trait for reading/writing guest physical memory.

Required Methods§

Source

fn read( &self, addr: GuestAddress, buf: &mut [u8], ) -> Result<(), HypervisorError>

Reads bytes from guest memory.

§Errors

Returns an error if the read fails.

Source

fn write(&self, addr: GuestAddress, buf: &[u8]) -> Result<(), HypervisorError>

Writes bytes to guest memory.

§Errors

Returns an error if the write fails.

Source

fn get_host_address( &self, addr: GuestAddress, ) -> Result<*mut u8, HypervisorError>

Gets the host virtual address for a guest physical address.

This is used for zero-copy operations.

§Safety

The returned pointer is only valid while the memory mapping exists.

§Errors

Returns an error if the address is not mapped.

Source

fn size(&self) -> u64

Returns the total size of guest memory in bytes.

Source

fn enable_dirty_tracking(&mut self) -> Result<(), HypervisorError>

Enables dirty page tracking.

After enabling, use get_dirty_pages() to retrieve modified pages.

§Errors

Returns an error if dirty tracking cannot be enabled.

Source

fn disable_dirty_tracking(&mut self) -> Result<(), HypervisorError>

Disables dirty page tracking.

§Errors

Returns an error if dirty tracking cannot be disabled.

Source

fn get_dirty_pages(&mut self) -> Result<Vec<DirtyPageInfo>, HypervisorError>

Gets and clears the list of dirty pages since the last call.

This resets the dirty bitmap after returning.

§Errors

Returns an error if dirty pages cannot be retrieved.

Source

fn dump_all(&self, buf: &mut [u8]) -> Result<(), HypervisorError>

Reads all guest memory into a buffer.

§Errors

Returns an error if memory cannot be read.

Implementors§