On Mon Jun 22, 2026 at 1:52 PM BST, Alvin Sun wrote: > > On 6/22/26 18:50, Gary Guo wrote: >> On Mon Jun 22, 2026 at 3:44 AM BST, Alvin Sun wrote: >>> Since `const_refs_to_static` has been stable as of the MSRV bump, a >>> `ThisModule` pointer can now be used in const contexts. >>> >>> Add a `THIS_MODULE` const to the `ModuleMetadata` trait so that modules >>> can provide their `ThisModule` pointer in const contexts such as static >>> `file_operations`. >>> >>> Move the `THIS_MODULE` static from the `module!` macro into the >>> `ModuleMetadata` impl, add a `this_module()` helper, and update `__init` >>> to use it. >>> >>> Signed-off-by: Alvin Sun <[email protected]> >>> --- >>> rust/kernel/lib.rs | 8 ++++++++ >>> rust/macros/module.rs | 34 +++++++++++++++++----------------- >>> 2 files changed, 25 insertions(+), 17 deletions(-) >>> >>> diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs >>> index b72b2fbe046d6..50f5a7b5f028e 100644 >>> --- a/rust/kernel/lib.rs >>> +++ b/rust/kernel/lib.rs >>> @@ -184,6 +184,14 @@ fn init(module: &'static ThisModule) -> impl >>> pin_init::PinInit<Self, error::Erro >>> pub trait ModuleMetadata { >>> /// The name of the module as specified in the `module!` macro. >>> const NAME: &'static crate::str::CStr; >>> + >>> + /// The module's `THIS_MODULE` pointer. >>> + const THIS_MODULE: ThisModule; >>> +} >>> + >>> +/// Returns a reference to the `THIS_MODULE` of the given module type. >>> +pub const fn this_module<M: ModuleMetadata>() -> &'static ThisModule { >>> + &M::THIS_MODULE >>> } >> Also, FWIW I think this should not put this in the crate root. Perhaps >> create a >> modules.rs? > > Makes sense. I'll create a new `module.rs` and move the module-related items > (`ModuleMetadata`, `ThisModule`, `this_module()`) there, then re-export from > `lib.rs`.
Please do not re-export `this_module`. For the other two, I think it's fine to re-export to avoid tree-wide changes, but please do update users on code that would route via the Rust tree. Best, Gary

