18

module_init初始化驱动程序和初始化驱动程序有什么区别subsys_initcall

4

1 回答 1

26

差异与时间有关,或者更准确地说,与执行顺序有关。也就是说,声明为的过程subsys_initcall保证在声明为的过程之前执行module_init。这种排序确保子系统和平台驱动程序在设备驱动程序尝试利用前者的功能之前被初始化(例如,设备驱动程序注册为子系统设备)。

每个宏的实际定义取决于内核是否配置为(可加载)模块。这些宏(和其他 init 宏)的定义可以在include/linux/init.h中找到

请注意,subsys_initcall()只能由内置(静态链接)模块使用。
module_init可以由内置或可加载模块使用。

于 2013-03-21T08:43:35.103 回答