pci_core/capabilities/
mod.rs1pub use self::read_only::ReadOnlyCapability;
7
8use crate::spec::caps::CapabilityId;
9use inspect::Inspect;
10use vmcore::save_restore::ProtobufSaveRestore;
11
12pub mod msi_cap;
13pub mod msix;
14pub mod pci_express;
15pub mod read_only;
16
17pub trait PciCapability: Send + Sync + Inspect + ProtobufSaveRestore {
19 fn label(&self) -> &str;
21
22 fn capability_id(&self) -> CapabilityId;
24
25 fn len(&self) -> usize;
27
28 fn read_u32(&self, offset: u16) -> u32;
30
31 fn write_u32(&mut self, offset: u16, val: u32);
33
34 fn reset(&mut self);
36
37 fn as_pci_express(&self) -> Option<&pci_express::PciExpressCapability> {
41 None
42 }
43
44 fn as_pci_express_mut(&mut self) -> Option<&mut pci_express::PciExpressCapability> {
46 None
47 }
48}