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

From: Arnd Bergmann
Date: Thu Jul 25 2024 - 11:31:40 EST


On Thu, Jul 25, 2024, at 16:39, Christoph Hellwig wrote:
> On Thu, Jul 25, 2024 at 11:01:33AM +0800, Youling Tang wrote:
>> - It doesn't feel good to have only one subinit/exit in a file.
>>   Assuming that there is only one file in each file, how do we
>>   ensure that the files are linked in order?(Is it sorted by *.o
>>   in the Makefile?)
>
> Yes, link order already matterns for initialization order for built-in
> code, so this is a well known concept.

Note: I removed the old way of entering a module a few
years ago, which allowed simply defining a function called
init_module(). The last one of these was a07d8ecf6b39
("ethernet: isa: convert to module_init/module_exit").

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.

- 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.

Arnd