pub trait Driver: Send {
type IdInfo: 'static;
const ID_TABLE: IdTable<Self::IdInfo>;
// Required method
fn probe(
dev: &Device<Core>,
id_info: &Self::IdInfo,
) -> Result<Pin<KBox<Self>>>;
}
Expand description
The PCI driver trait.
§Example
struct MyDriver;
kernel::pci_device_table!(
PCI_TABLE,
MODULE_PCI_TABLE,
<MyDriver as pci::Driver>::IdInfo,
[
(pci::DeviceId::from_id(bindings::PCI_VENDOR_ID_REDHAT, bindings::PCI_ANY_ID as _), ())
]
);
impl pci::Driver for MyDriver {
type IdInfo = ();
const ID_TABLE: pci::IdTable<Self::IdInfo> = &PCI_TABLE;
fn probe(
_pdev: &pci::Device<Core>,
_id_info: &Self::IdInfo,
) -> Result<Pin<KBox<Self>>> {
Err(ENODEV)
}
}
Drivers must implement this trait in order to get a PCI driver registered. Please refer to the
Adapter
documentation for an example.
Required Associated Constants§
Required Associated Types§
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.