Skip to main content

module_phy_driver

Macro module_phy_driver 

Source
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);
}