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§
sourcefn acknowledge_pic_interrupt(&self) -> Option<u8>
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.
sourcefn handle_eoi(&self, irq: u32)
fn handle_eoi(&self, irq: u32)
Handle End Of Interrupt (EOI)
A u32
is used for the IRQ value for (future) ARM compat.
sourcefn signal_synic_event(
&self,
vtl: Vtl,
connection_id: u32,
flag: u16,
) -> HvResult<()>
fn signal_synic_event( &self, vtl: Vtl, connection_id: u32, flag: u16, ) -> HvResult<()>
Signal a synic event.
sourcefn post_synic_message(
&self,
vtl: Vtl,
connection_id: u32,
secure: bool,
message: &[u8],
) -> HvResult<()>
fn post_synic_message( &self, vtl: Vtl, connection_id: u32, secure: bool, message: &[u8], ) -> HvResult<()>
Post a synic message.
sourcefn read_mmio(
&self,
vp: VpIndex,
address: u64,
data: &mut [u8],
) -> impl Future<Output = ()>
fn read_mmio( &self, vp: VpIndex, address: u64, data: &mut [u8], ) -> impl Future<Output = ()>
Memory mapped IO read.
sourcefn write_mmio(
&self,
vp: VpIndex,
address: u64,
data: &[u8],
) -> impl Future<Output = ()>
fn write_mmio( &self, vp: VpIndex, address: u64, data: &[u8], ) -> impl Future<Output = ()>
Memory mapped IO write.
Object Safety§
This trait is not object safe.