diff options
| author | Gary Guo <gary@garyguo.net> | 2026-06-29 13:39:41 +0100 |
|---|---|---|
| committer | Danilo Krummrich <dakr@kernel.org> | 2026-07-30 22:50:15 +0200 |
| commit | 0deeb4222dd1bd76fe0e0bbeedff862d7a42ce44 (patch) | |
| tree | ba698f373674b70b1a75e17d1d62c2820dec1f2f /rust/kernel | |
| parent | 1d92f2e8b8810556d631cd5dffb536a66ff55553 (diff) | |
rust: driver: remove `$module_table_name` from `module_device_table`
Wrap the generated code in a `const _: ()` block to avoid symbol conflict.
This removes the need of creating a new identifier.
Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20260629-id_info-v2-7-56fccbe9c5ef@garyguo.net
[ Consider the serdev code merged in the meantime. - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'rust/kernel')
| -rw-r--r-- | rust/kernel/device_id.rs | 30 | ||||
| -rw-r--r-- | rust/kernel/i2c.rs | 3 | ||||
| -rw-r--r-- | rust/kernel/net/phy.rs | 2 | ||||
| -rw-r--r-- | rust/kernel/pci.rs | 1 | ||||
| -rw-r--r-- | rust/kernel/platform.rs | 2 | ||||
| -rw-r--r-- | rust/kernel/serdev.rs | 2 | ||||
| -rw-r--r-- | rust/kernel/usb.rs | 1 |
7 files changed, 17 insertions, 24 deletions
diff --git a/rust/kernel/device_id.rs b/rust/kernel/device_id.rs index 0239f89d5f69..022f0101871f 100644 --- a/rust/kernel/device_id.rs +++ b/rust/kernel/device_id.rs @@ -177,7 +177,7 @@ impl<T: RawDeviceId, U, const N: usize> IdTable<T, U> for IdArray<T, U, N> { macro_rules! module_device_table { ( $table_type: literal, $device_id_ty: ty, - $table_name: ident, $module_table_name: ident, $id_info_type: ty, + $table_name: ident, $id_info_type: ty, [$(($id: expr, $info:expr $(,)?)),* $(,)?] ) => { const $table_name: $crate::device_id::IdArray< @@ -186,13 +186,13 @@ macro_rules! module_device_table { { <[$device_id_ty]>::len(&[$($id,)*]) }, > = $crate::device_id::IdArray::new([$(($id, $info),)*]); - $crate::module_device_table!($table_type, $module_table_name, $table_name); + $crate::module_device_table!($table_type, $table_name); }; // Case for no ID info. ( $table_type: literal, $device_id_ty: ty, - $table_name: ident, $module_table_name: ident, @none, + $table_name: ident, @none, [$($id: expr),* $(,)?] ) => { const $table_name: $crate::device_id::IdArray< @@ -201,18 +201,20 @@ macro_rules! module_device_table { { <[$device_id_ty]>::len(&[$($id,)*]) }, > = $crate::device_id::IdArray::new_without_index([$($id),*]); - $crate::module_device_table!($table_type, $module_table_name, $table_name); + $crate::module_device_table!($table_type, $table_name); }; - ($table_type: literal, $module_table_name: ident, $table_name:ident) => { - #[rustfmt::skip] - #[export_name = - concat!("__mod_device_table__", line!(), - "__kmod_", module_path!(), - "__", $table_type, - "__", stringify!($table_name)) - ] - static $module_table_name: [::core::mem::MaybeUninit<u8>; $table_name.raw_ids().size()] = - unsafe { ::core::mem::transmute_copy($table_name.raw_ids()) }; + ($table_type: literal, $table_name:ident) => { + const _: () = { + #[rustfmt::skip] + #[export_name = + concat!("__mod_device_table__", line!(), + "__kmod_", module_path!(), + "__", $table_type, + "__", stringify!($table_name)) + ] + static MOD_DEVICE_TABLE: [::core::mem::MaybeUninit<u8>; $table_name.raw_ids().size()] = + unsafe { ::core::mem::transmute_copy($table_name.raw_ids()) }; + }; }; } diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs index a1f968fd873d..6f2dcd467e72 100644 --- a/rust/kernel/i2c.rs +++ b/rust/kernel/i2c.rs @@ -261,7 +261,6 @@ macro_rules! module_i2c_driver { /// /// kernel::acpi_device_table!( /// ACPI_TABLE, -/// MODULE_ACPI_TABLE, /// <MyDriver as i2c::Driver>::IdInfo, /// [ /// (acpi::DeviceId::new(c"LNUXBEEF"), ()) @@ -270,7 +269,6 @@ macro_rules! module_i2c_driver { /// /// kernel::i2c_device_table!( /// I2C_TABLE, -/// MODULE_I2C_TABLE, /// <MyDriver as i2c::Driver>::IdInfo, /// [ /// (i2c::DeviceId::new(c"rust_driver_i2c"), ()) @@ -279,7 +277,6 @@ macro_rules! module_i2c_driver { /// /// kernel::of_device_table!( /// OF_TABLE, -/// MODULE_OF_TABLE, /// <MyDriver as i2c::Driver>::IdInfo, /// [ /// (of::DeviceId::new(c"test,device"), ()) diff --git a/rust/kernel/net/phy.rs b/rust/kernel/net/phy.rs index e25c61c6d8bb..cc7ec436cfca 100644 --- a/rust/kernel/net/phy.rs +++ b/rust/kernel/net/phy.rs @@ -867,7 +867,7 @@ macro_rules! module_phy_driver { (@device_table [$($dev:expr),+]) => { $crate::module_device_table!( "mdio", $crate::net::phy::DeviceId, - phydev, TABLE, @none, [$($dev),+] + TABLE, @none, [$($dev),+] ); }; diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs index 5cc4052991e7..b170cf8fffe1 100644 --- a/rust/kernel/pci.rs +++ b/rust/kernel/pci.rs @@ -261,7 +261,6 @@ macro_rules! pci_device_table { /// /// kernel::pci_device_table!( /// PCI_TABLE, -/// MODULE_PCI_TABLE, /// <MyDriver as pci::Driver>::IdInfo, /// [ /// ( diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 9b362e0495d3..210a815925ce 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -176,7 +176,6 @@ macro_rules! module_platform_driver { /// /// kernel::of_device_table!( /// OF_TABLE, -/// MODULE_OF_TABLE, /// <MyDriver as platform::Driver>::IdInfo, /// [ /// (of::DeviceId::new(c"test,device"), ()) @@ -185,7 +184,6 @@ macro_rules! module_platform_driver { /// /// kernel::acpi_device_table!( /// ACPI_TABLE, -/// MODULE_ACPI_TABLE, /// <MyDriver as platform::Driver>::IdInfo, /// [ /// (acpi::DeviceId::new(c"LNUXBEEF"), ()) diff --git a/rust/kernel/serdev.rs b/rust/kernel/serdev.rs index cf537d9eeeb4..383f62b1b713 100644 --- a/rust/kernel/serdev.rs +++ b/rust/kernel/serdev.rs @@ -322,7 +322,6 @@ macro_rules! module_serdev_device_driver { /// /// kernel::of_device_table!( /// OF_TABLE, -/// MODULE_OF_TABLE, /// <MyDriver as serdev::Driver>::IdInfo, /// [ /// (of::DeviceId::new(c"test,device"), ()) @@ -331,7 +330,6 @@ macro_rules! module_serdev_device_driver { /// /// kernel::acpi_device_table!( /// ACPI_TABLE, -/// MODULE_ACPI_TABLE, /// <MyDriver as serdev::Driver>::IdInfo, /// [ /// (acpi::DeviceId::new(c"LNUXBEEF"), ()) diff --git a/rust/kernel/usb.rs b/rust/kernel/usb.rs index 3797f4a79b79..d8cffbe594ff 100644 --- a/rust/kernel/usb.rs +++ b/rust/kernel/usb.rs @@ -271,7 +271,6 @@ macro_rules! usb_device_table { /// /// kernel::usb_device_table!( /// USB_TABLE, -/// MODULE_USB_TABLE, /// <MyDriver as usb::Driver>::IdInfo, /// [ /// (usb::DeviceId::from_id(0x1234, 0x5678), ()), |
