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.