Re: [PATCH v3 2/6] modules: Add macros to specify modinfo prefix
From: Masahiro Yamada
Date: Mon Jun 02 2025 - 03:50:09 EST
On Tue, May 27, 2025 at 6:08 PM Alexey Gladkov <legion@xxxxxxxxxx> 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 <legion@xxxxxxxxxx>
> Reviewed-by: Petr Pavlu <petr.pavlu@xxxxxxxx>
> ---
> 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