"Benno Lossin" <los...@kernel.org> writes: > On Thu Jun 12, 2025 at 3:40 PM CEST, Andreas Hindborg wrote: >> + >> + fn emit_params(&mut self, info: &ModuleInfo) { >> + let Some(params) = &info.params else { >> + return; >> + }; >> + >> + for param in params { >> + let ops = param_ops_path(¶m.ptype); >> + >> + // Note: The spelling of these fields is dictated by the user >> space >> + // tool `modinfo`. >> + self.emit_param("parmtype", ¶m.name, ¶m.ptype); >> + self.emit_param("parm", ¶m.name, ¶m.description); > > I just read this part again and I want to voice my dissatisfaction with > these key names. (not that you can do anything about that :) > >> + >> + write!( >> + self.param_buffer, >> + " >> + pub(crate) static {param_name}: > > Does this need to be accessed by anything else except the static below? > If no, then can we move it inside of that static? So > > #[link_section = \"__param\"] > #[used] > static __{module_name}_{param_name}_struct: > ::kernel::module_param::RacyKernelParam = { > static {param_name}: > ::kernel::module_param::ModuleParamAccess<{param_type}> = > > ::kernel::module_param::ModuleParamAccess::new({param_default}); > // ... > };
It is used to access the value of the parameter from the module. If you reduce visibility you will get an error when trying to read the parameter value: RUSTC samples/rust/rust_minimal.o error[E0425]: cannot find value `test_parameter` in module `module_parameters` --> /home/aeh/src/linux-rust/module-params/samples/rust/rust_minimal.rs:31:33 | 31 | *module_parameters::test_parameter.get() | ^^^^^^^^^^^^^^ not found in `module_parameters` error: aborting due to 1 previous error Best regards, Andreas Hindborg