Re: [PATCH 1/4] module: Add module_subinit{_noexit} and module_subeixt helper macros

Christoph Hellwig
2024-07-25T15:34:06Z

On Thu, Jul 25, 2024 at 05:30:58PM +0200, Arnd Bergmann wrote:
> Now I think we could just make the module_init() macro
> do the same thing as a built-in initcall() and put
> an entry in a special section, to let you have multiple
> entry points in a loadable module.
>
> There are still at least two problems though:
>
> - while link order is defined between files in a module,
> I don't think there is any guarantee for the order between
> two initcalls of the same level within a single file.

I think the sanest answer is to only allow one per file. If you
are in the same file anyway calling one function from the other
is not a big burden. It really is when they are spread over files
when it is annoying, and the three examples show that pretty
clearly.

> - For built-in code we don't have to worry about matching
> the order of the exit calls since they don't exist there.
> As I understand, the interesting part of this patch
> series is about making sure the order matches between
> init and exit, so there still needs to be a way to
> express a pair of such calls.

That's why you want a single macro to define the init and exit
callbacks, so that the order can be matched up and so that
error unwinding can use the relative position easily.