The device ID table and its associated info is really just a map. Add a syntax to `module_device_table` macro that reflects that.
Signed-off-by: Gary Guo <[email protected]> --- rust/kernel/device_id.rs | 11 +++++++++++ samples/rust/rust_driver_pci.rs | 7 +++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/rust/kernel/device_id.rs b/rust/kernel/device_id.rs index 26618bcda276..7c61cdcc9427 100644 --- a/rust/kernel/device_id.rs +++ b/rust/kernel/device_id.rs @@ -183,6 +183,17 @@ macro_rules! module_device_table { $table_type: literal, $device_id_ty: ty, $table_name: ident, $id_info_type: ty, [$(($id: expr, $info:expr $(,)?)),* $(,)?] + ) => { + $crate::module_device_table!( + $table_type, $device_id_ty, $table_name, $id_info_type, + {$($id=>$info,)*} + ); + }; + + ( + $table_type: literal, $device_id_ty: ty, + $table_name: ident, $id_info_type: ty, + {$($id: expr => $info:expr),* $(,)?} ) => { #[export_name = concat!("__mod_device_table__", line!(), diff --git a/samples/rust/rust_driver_pci.rs b/samples/rust/rust_driver_pci.rs index 2282191e6292..652819dff082 100644 --- a/samples/rust/rust_driver_pci.rs +++ b/samples/rust/rust_driver_pci.rs @@ -75,10 +75,9 @@ struct SampleDriverData<'bound> { kernel::pci_device_table!( PCI_TABLE, <SampleDriver as pci::Driver>::IdInfo, - [( - pci::DeviceId::from_id(pci::Vendor::REDHAT, 0x5), - TestIndex::NO_EVENTFD - )] + { + pci::DeviceId::from_id(pci::Vendor::REDHAT, 0x5) => TestIndex::NO_EVENTFD, + } ); impl SampleDriverData<'_> { -- 2.54.0
