Crate polished_pci

Crate polished_pci 

Source
Expand description

PCI Bus Access and Enumeration Library

This crate provides basic PCI bus access and enumeration routines for x86 systems. It is designed for use in no_std environments, such as kernels or bootloaders.

§Features

  • Read PCI configuration space
  • Enumerate devices on PCI bus 0
  • Print device information using a serial logger

§Example

use polished_pci::pci_enumeration_demo;
pci_enumeration_demo();

§Integration Examples

§Kernel-level Initialization

// In your kernel's main.rs or init.rs
use polished_pci::pci_enumeration_demo;
// Initialize and enumerate PCI devices (prints to serial logger)
pci_enumeration_demo();

§Dumping All PCI Devices

use polished_pci::scan_bus0_devices;

// Scan all devices on bus 0
let devices = scan_bus0_devices();
for dev in devices.iter() {
    // Use the fields of dev directly, or print as needed
    // e.g., println!("bus={} device={} vendor={:04x} device={:04x} class={:02x} subclass={:02x}", dev.bus, dev.device, dev.vendor_id, dev.device_id, dev.class, dev.subclass);
}

§Finding the First Network Device

use polished_pci::{scan_bus0_devices, PciDevice, class_code_str};

// Scan all devices on bus 0
let devices = scan_bus0_devices().unwrap();
// Class code 0x02 is for network controllers
let net_dev = devices.iter().find(|dev| dev.class == 0x02);
if let Some(dev) = net_dev {
    // Do something with the network device
    // e.g., print info or initialize driver
}

Re-exports§

pub use bar::BarInfo;
pub use bar::get_bars;
pub use bar::probe_bar;
pub use config::pci_config_read;
pub use config::read_config_u8;
pub use config::read_config_u16;
pub use config::read_config_u32;
pub use config::write_config_u8;
pub use config::write_config_u16;
pub use config::write_config_u32;
pub use device::PciDevice;
pub use error::PciError;
pub use lookup::class_code_str;
pub use lookup::subclass_str;
pub use lookup::vendor_id_str;
pub use scan::pci_enumeration_demo;
pub use scan::print_pci_device;
pub use scan::scan_bus0_devices;

Modules§

bar
config
device
error
PCI Error Types
lookup
PCI Lookup Tables and String Conversion Utilities
scan