1 // Copyright © 2020 Intel Corporation 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 // 5 6 #[macro_use] 7 extern crate serde_derive; 8 9 mod bus; 10 pub mod dma_mapping; 11 pub mod interrupt; 12 13 pub use self::bus::{Bus, BusDevice, Error as BusError}; 14 15 /// Type of Message Signalled Interrupt 16 #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] 17 pub enum MsiIrqType { 18 /// PCI MSI IRQ numbers. 19 PciMsi, 20 /// PCI MSIx IRQ numbers. 21 PciMsix, 22 /// Generic MSI IRQ numbers. 23 GenericMsi, 24 } 25 26 /// Enumeration for device resources. 27 #[allow(missing_docs)] 28 #[derive(Clone, Debug, Serialize, Deserialize)] 29 pub enum Resource { 30 /// IO Port address range. 31 PioAddressRange { base: u16, size: u16 }, 32 /// Memory Mapped IO address range. 33 MmioAddressRange { base: u64, size: u64 }, 34 /// Legacy IRQ number. 35 LegacyIrq(u32), 36 /// Message Signaled Interrupt 37 MsiIrq { 38 ty: MsiIrqType, 39 base: u32, 40 size: u32, 41 }, 42 /// Network Interface Card MAC address. 43 MacAddress(String), 44 /// KVM memslot index. 45 KvmMemSlot(u32), 46 } 47