1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! This module implements the various enumerations that can be used to enumerate
//! PCI devices. In addition, it also provides the `default_pci_enumerator()`
//! function to create the current platform's default enumerator.
//!
//! # Currently implemented enumerators
//!
//! Enumerator | Platforms | PCI id | PCI location | Revision | Device class | PCI subsystem | Assigned IRQ | OS driver
//! ---------------------------------------------- | --------- | ------ | ------------ | -------- | ------------ | ----------------- | ------------ | ----------
//! [`LinuxProcFsPciEnumerator::Fastest`] | Linux | ✅ | ✅<sup>2</sup> | ❌ | ❌ | ❌ | ✅ | ✅
//! [`LinuxProcFsPciEnumerator::HeadersOnly`] | Linux | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ❌ | ❌
//! [`LinuxProcFsPciEnumerator::SkipNoncommonHeaders`] | Linux | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ❌ | ✅ | ✅
//! [`LinuxProcFsPciEnumerator::Exhaustive`] | Linux | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅
//! [`MacOsIoKitPciEnumerator`]<sup>3</sup> | macOS | ✅ | ⚠️<sup>1, 2</sup> | ✅ | ✅ | ✅ | ❌ | ❌
//! [`WindowsSetupApiPciEnumerator`] | Windows | ✅ | ⚠️<sup>1, 2</sup> | ✅ | ✅ | ✅ | ❌ | ❌
//! [`WindowsWmiPciEnumerator`] | Windows | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌
//!
//! Notes:
//! - (1) = The PCI location on this enumerator is parsed from human readable strings; that parsing might fail or the information might be incorrect.
//! - (2) = The PCI location on this enumerator might not support multiple PCI segments/domains correctly.
//! - (3) = Apparently most of the devices in Apple silicon Macs are not PCI/PCIe. As such PCI enumeration on Apple silicon computers return quite a short list.
use crate::;
pub use *;
pub use *;
pub use *;
/// A trait that is implemented by all types able to enumerate PCI
/// devices.
/// Creates the default PCI enumerator for the platform in use. If
/// no default PCI enumerator is available for the platform, it
/// returns `PciInfoError::NoDefaultPciEnumeratorForPlatform`.
;