初始化驱动程序时module_init
和subsys_initcall
之间有什么区别?
答案 0 :(得分:21)
差异与时间有关,或者更确切地说,与执行顺序有关。也就是说,声明为subsys_initcall
的过程保证在声明为module_init
的过程之前执行。这种排序可确保在设备驱动程序尝试利用以前的功能(例如设备驱动程序注册为子系统设备)之前初始化子系统和平台驱动程序。
每个的实际宏定义取决于是否为(可加载)模块配置了内核。可以在include/linux/init.h
中找到这些宏(和其他init宏)的定义请注意,subsys_initcall()
只能由内置(静态链接)模块使用
module_init
可由内置或可加载模块使用。