module_init
和有什么区别和 subsys_initcall
在初始化驱动程序时?
最佳答案
差异与时间有关,或者更准确地说,与执行顺序有关。即声明为subsys_initcall
的过程保证在声明为 module_init
的过程之前执行.这种排序确保子系统和平台驱动程序在设备驱动程序尝试利用前者的功能之前被初始化(例如,设备驱动程序注册为子系统设备)。
每个宏的实际定义取决于内核是否配置为(可加载)模块。这些宏(和其他 init 宏)的定义可以在 include/linux/init.h 中找到。
请注意 subsys_initcall()
只能由内置(静态链接)模块使用。module_init
可以由内置或可加载模块使用。
关于linux-kernel - 初始化驱动程序时 module_init 和 subsys_initcall 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15541290/