On Tue, May 27, 2025 at 6:08 PM Alexey Gladkov <leg...@kernel.org> wrote: > > The __MODULE_INFO macros always use __MODULE_INFO_PREFIX. The only way > to use a different prefix is to override __MODULE_INFO_PREFIX, which is > not very useful.
Not necessarily. This would be a very special case only used in modpost, and modpost can use MODULE_INFO() instead. list_for_each_entry_safe(alias, next, &mod->aliases, node) { - buf_printf(&buf, "MODULE_ALIAS_MODNAME(\"%s\", \"%s\");\n", + buf_printf(&buf, "MODULE_INFO(\"%s\".alias, \"%s\");\n", alias->builtin_modname, alias->str); list_del(&alias->node); free(alias->builtin_modname); > The new macro will be used in file2alias.c to generate modalias for > builtin modules. > > Signed-off-by: Alexey Gladkov <leg...@kernel.org> > Reviewed-by: Petr Pavlu <petr.pa...@suse.com> > --- > include/linux/module.h | 3 +++ > include/linux/moduleparam.h | 7 +++++-- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/include/linux/module.h b/include/linux/module.h > index 8050f77c3b64..88048561360f 100644 > --- a/include/linux/module.h > +++ b/include/linux/module.h > @@ -170,6 +170,9 @@ struct module_kobject > *lookup_or_create_module_kobject(const char *name); > /* For userspace: you can also call me... */ > #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias) > > +#define MODULE_ALIAS_MODNAME(_modname, _alias) \ > + __MODULE_INFO_WITH_PREFIX(_modname ".", alias, alias, _alias) > + > /* Soft module dependencies. See man modprobe.d for details. > * Example: MODULE_SOFTDEP("pre: module-foo module-bar post: module-baz") > */ > diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h > index bfb85fd13e1f..3f819fc67c43 100644 > --- a/include/linux/moduleparam.h > +++ b/include/linux/moduleparam.h > @@ -20,10 +20,13 @@ > /* Chosen so that structs with an unsigned long line up. */ > #define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long)) > > -#define __MODULE_INFO(tag, name, info) \ > +#define __MODULE_INFO_WITH_PREFIX(prefix, tag, name, info) \ > static const char __UNIQUE_ID(name)[] \ > __used __section(".modinfo") __aligned(1) \ > - = __MODULE_INFO_PREFIX __stringify(tag) "=" info > + = prefix __stringify(tag) "=" info > + > +#define __MODULE_INFO(tag, name, info) \ > + __MODULE_INFO_WITH_PREFIX(__MODULE_INFO_PREFIX, tag, name, info) > > #define __MODULE_PARM_TYPE(name, _type) > \ > __MODULE_INFO(parmtype, name##type, #name ":" _type) > -- > 2.49.0 > -- Best Regards Masahiro Yamada