初始化驱动程序时,module_init
和subsys_initcall
有何区别?
初始化驱动程序时,module_init
和subsys_initcall
有何区别?
subsys_initcall
的过程保证在被声明为module_init
的过程之前执行。这种排序确保子系统和平台驱动在设备驱动尝试使用前初始化(例如,设备驱动作为子系统设备注册)。subsys_initcall()
只能由内置(静态链接)模块使用。module_init
可由内置或可加载模块使用。*.ko
模块,subsys_initcall()
被映射为与 module_init()
相同,即 device_initcall()
。参考:http://lxr.free-electrons.com/source/include/linux/init.h#L298 - TheCodeArtist