我第一次编写驱动程序代码。我检查了许多资源,其中指出内核模块的初始化函数是 init_module() 或使用 module_init() 宏指定的任何其他函数。当加载内核模块时,会调用此初始化函数。
但是我找不到任何有关当可加载内核模块中不存在初始化函数并且尝试加载时会发生什么情况的信息。
如果内核模块位于树内并且没有初始化函数,会出现什么情况?
- -提前致谢..
答案1
模块不需要有初始化函数,do_init_module
处理它的缺席:
/* Start the module */
if (mod->init != NULL)
ret = do_one_initcall(mod->init);
此类模块也可以在没有退出功能的情况下卸载(与具有初始化功能的模块相反,如果没有退出功能,则初始化功能是永久性的)。
当模块内置时,初始化函数成为__initcall
链接时识别的函数;他们的缺席也不会造成任何问题。