[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNATkXFqKLPcHFg-WDynRrVy3BRs6twvcyo2YJQqZBy9xsQ@mail.gmail.com>
Date: Mon, 2 Jun 2025 16:49:24 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Alexey Gladkov <legion@...nel.org>
Cc: Petr Pavlu <petr.pavlu@...e.com>, Luis Chamberlain <mcgrof@...nel.org>,
Sami Tolvanen <samitolvanen@...gle.com>, Daniel Gomez <da.gomez@...sung.com>,
Nathan Chancellor <nathan@...nel.org>, Nicolas Schier <nicolas.schier@...ux.dev>,
linux-kernel@...r.kernel.org, linux-modules@...r.kernel.org,
linux-kbuild@...r.kernel.org
Subject: Re: [PATCH v3 2/6] modules: Add macros to specify modinfo prefix
On Tue, May 27, 2025 at 6:08 PM Alexey Gladkov <legion@...nel.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 <legion@...nel.org>
> Reviewed-by: Petr Pavlu <petr.pavlu@...e.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
Powered by blists - more mailing lists