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

Reply via email to