pub struct VpciBus { /* private fields */ }
Expand description
A VPCI bus, which can be used to enumerate PCI devices to a guest over vmbus.
Note that this implementation only allows a single device per bus currently. In practice, this is the only used and well-tested configuration in Hyper-V.
Implementations§
Source§impl VpciBus
impl VpciBus
Sourcepub async fn new(
driver_source: &VmTaskDriverSource,
instance_id: Guid,
device: Arc<CloseableMutex<dyn ChipsetDevice>>,
register_mmio: &mut dyn RegisterMmioIntercept,
vmbus: &dyn ParentBus,
msi_controller: Arc<dyn VpciInterruptMapper>,
) -> Result<Self, CreateBusError>
pub async fn new( driver_source: &VmTaskDriverSource, instance_id: Guid, device: Arc<CloseableMutex<dyn ChipsetDevice>>, register_mmio: &mut dyn RegisterMmioIntercept, vmbus: &dyn ParentBus, msi_controller: Arc<dyn VpciInterruptMapper>, ) -> Result<Self, CreateBusError>
Creates a new VPCI bus.
Trait Implementations§
Source§impl ChangeDeviceState for VpciBus
impl ChangeDeviceState for VpciBus
Source§impl ChipsetDevice for VpciBus
impl ChipsetDevice for VpciBus
Source§fn supports_mmio(&mut self) -> Option<&mut dyn MmioIntercept>
fn supports_mmio(&mut self) -> Option<&mut dyn MmioIntercept>
Optionally returns a trait object to send MMIO port intercepts to.
Source§fn supports_pio(&mut self) -> Option<&mut (dyn PortIoIntercept + 'static)>
fn supports_pio(&mut self) -> Option<&mut (dyn PortIoIntercept + 'static)>
Optionally returns a trait object to send IO port intercepts to.
Source§fn supports_pci(&mut self) -> Option<&mut (dyn PciConfigSpace + 'static)>
fn supports_pci(&mut self) -> Option<&mut (dyn PciConfigSpace + 'static)>
Optionally returns a trait object to send PCI config space accesses to.
Source§fn supports_poll_device(&mut self) -> Option<&mut dyn PollDevice>
fn supports_poll_device(&mut self) -> Option<&mut dyn PollDevice>
Optionally returns a trait object to send poll requests to.
Source§fn supports_line_interrupt_target(
&mut self,
) -> Option<&mut dyn LineInterruptTarget>
fn supports_line_interrupt_target( &mut self, ) -> Option<&mut dyn LineInterruptTarget>
Optionally returns a trait object to send interrupt line changes to.
Source§fn supports_handle_eoi(&mut self) -> Option<&mut dyn HandleEoi>
fn supports_handle_eoi(&mut self) -> Option<&mut dyn HandleEoi>
Optionally returns a trait object to send EOI requests to.
Source§fn supports_acknowledge_pic_interrupt(
&mut self,
) -> Option<&mut dyn AcknowledgePicInterrupt>
fn supports_acknowledge_pic_interrupt( &mut self, ) -> Option<&mut dyn AcknowledgePicInterrupt>
Optionally returns a trait object with which to acknowledge PIC
interrupts.
Source§impl InspectMut for VpciBus
impl InspectMut for VpciBus
Source§fn inspect_mut(&mut self, req: Request<'_>)
fn inspect_mut(&mut self, req: Request<'_>)
Inspects the object.
Source§impl MmioIntercept for VpciBus
impl MmioIntercept for VpciBus
Source§fn mmio_read(&mut self, addr: u64, data: &mut [u8]) -> IoResult
fn mmio_read(&mut self, addr: u64, data: &mut [u8]) -> IoResult
Dispatch an MMIO read to the device with the given address.
Source§fn mmio_write(&mut self, addr: u64, data: &[u8]) -> IoResult
fn mmio_write(&mut self, addr: u64, data: &[u8]) -> IoResult
Dispatch an MMIO write to the device with the given address.
Source§fn get_static_regions(&mut self) -> &[(&str, RangeInclusive<u64>)]
fn get_static_regions(&mut self) -> &[(&str, RangeInclusive<u64>)]
Report a set of static static mmio regions (region_name, gpa_range) that
cannot be remapped at runtime and are always registered. Read more
Source§impl SaveRestore for VpciBus
impl SaveRestore for VpciBus
Source§type SavedState = NoSavedState
type SavedState = NoSavedState
The concrete saved state type.
Source§fn restore(
&mut self,
NoSavedState: Self::SavedState,
) -> Result<(), RestoreError>
fn restore( &mut self, NoSavedState: Self::SavedState, ) -> Result<(), RestoreError>
Restores the object’s state.
Auto Trait Implementations§
impl Freeze for VpciBus
impl !RefUnwindSafe for VpciBus
impl Send for VpciBus
impl Sync for VpciBus
impl Unpin for VpciBus
impl !UnwindSafe for VpciBus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> ProtobufSaveRestore for T
impl<T> ProtobufSaveRestore for T
Source§fn restore(&mut self, state: SavedStateBlob) -> Result<(), RestoreError>
fn restore(&mut self, state: SavedStateBlob) -> Result<(), RestoreError>
Restore the object.