Trait virt::io::CpuIo

source ·
pub trait CpuIo: Send + Sync {
    // Required methods
    fn is_mmio(&self, address: u64) -> bool;
    fn acknowledge_pic_interrupt(&self) -> Option<u8>;
    fn handle_eoi(&self, irq: u32);
    fn signal_synic_event(
        &self,
        vtl: Vtl,
        connection_id: u32,
        flag: u16,
    ) -> HvResult<()>;
    fn post_synic_message(
        &self,
        vtl: Vtl,
        connection_id: u32,
        secure: bool,
        message: &[u8],
    ) -> HvResult<()>;
    fn read_mmio(
        &self,
        vp: VpIndex,
        address: u64,
        data: &mut [u8],
    ) -> impl Future<Output = ()>;
    fn write_mmio(
        &self,
        vp: VpIndex,
        address: u64,
        data: &[u8],
    ) -> impl Future<Output = ()>;
    fn read_io(
        &self,
        vp: VpIndex,
        port: u16,
        data: &mut [u8],
    ) -> impl Future<Output = ()>;
    fn write_io(
        &self,
        vp: VpIndex,
        port: u16,
        data: &[u8],
    ) -> impl Future<Output = ()>;
}
Expand description

This trait provides the operations between the VP dispatch loop and the platform’s devices.

Required Methods§

source

fn is_mmio(&self, address: u64) -> bool

Check if a given address will be handled by a device.

source

fn acknowledge_pic_interrupt(&self) -> Option<u8>

Gets the vector of the next interrupt to inject from the legacy interrupt controller (PIC) and sets the IRQ in service.

source

fn handle_eoi(&self, irq: u32)

Handle End Of Interrupt (EOI)

A u32 is used for the IRQ value for (future) ARM compat.

source

fn signal_synic_event( &self, vtl: Vtl, connection_id: u32, flag: u16, ) -> HvResult<()>

Signal a synic event.

source

fn post_synic_message( &self, vtl: Vtl, connection_id: u32, secure: bool, message: &[u8], ) -> HvResult<()>

Post a synic message.

source

fn read_mmio( &self, vp: VpIndex, address: u64, data: &mut [u8], ) -> impl Future<Output = ()>

Memory mapped IO read.

source

fn write_mmio( &self, vp: VpIndex, address: u64, data: &[u8], ) -> impl Future<Output = ()>

Memory mapped IO write.

source

fn read_io( &self, vp: VpIndex, port: u16, data: &mut [u8], ) -> impl Future<Output = ()>

Programmed IO read.

source

fn write_io( &self, vp: VpIndex, port: u16, data: &[u8], ) -> impl Future<Output = ()>

Programmed IO write.

Object Safety§

This trait is not object safe.

Implementors§