macro_rules! module_phy_driver {
(@replace_expr $_t:tt $sub:expr) => { ... };
(@count_devices $($x:expr),*) => { ... };
(@device_table [$($dev:expr),+]) => { ... };
(drivers: [$($driver:ident),+ $(,)?], device_table: [$($dev:expr),+ $(,)?], $($f:tt)*) => { ... };
}Expand description
Declares a kernel module for PHYs drivers.
This creates a static array of kernel’s struct phy_driver and registers it.
This also corresponds to the kernel’s MODULE_DEVICE_TABLE macro, which embeds the information
for module loading into the module binary file. Every driver needs an entry in device_table.
§Examples
use kernel::net::phy::{self, DeviceId};
use kernel::prelude::*;
kernel::module_phy_driver! {
drivers: [PhySample],
device_table: [
DeviceId::new_with_driver::<PhySample>()
],
name: "rust_sample_phy",
authors: ["Rust for Linux Contributors"],
description: "Rust sample PHYs driver",
license: "GPL",
}
struct PhySample;
#[vtable]
impl phy::Driver for PhySample {
const NAME: &'static CStr = c"PhySample";
const PHY_DEVICE_ID: phy::DeviceId = phy::DeviceId::new_with_exact_mask(0x00000001);
}