没有初始化功能时,是否会加载内核模块?

问题描述

我是第一次编写驱动程序代码。我已经检查了许多资源,这些资源指出内核模块的初始化函数是init_module()或使用MODULE_INIT()宏指定的任何其他函数。并在加载内核模块时调用此初始化函数

但是我找不到有关可加载内核模块中不存在初始化函数并试图加载初始化函数的情况的任何信息。

如果内核模块在树中并且不具有初始化功能,会出现什么情况?

---先谢谢了。

解决方法

在例程do_init_module中,它测试是否提供了初始化例程。如果没有,它将跳过呼叫。参见https://elixir.bootlin.com/linux/v3.10.108/source/kernel/module.c#L3092

if (mod->init != NULL)
    ret = do_one_initcall(mod->init);