xref: /cloud-hypervisor/vm-device/src/lib.rs (revision 9af2968a7dc47b89bf07ea9dc5e735084efcfa3a)
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