Init.h中有相关initcall的启动次序,在system.map中可看出具体的__initcall指针的前后次序
#define pure_initcall(fn) __define_initcall("0",fn,0)
#define core_initcall(fn) __define_initcall("1",fn,1)
#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)
#define postcore_initcall(fn) __define_initcall("2",fn,2)
#define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s)
#define arch_initcall(fn) __define_initcall("3",fn,3)

Linux内核在启动过程中,驱动模块的加载顺序由initcall宏定义决定,如纯初始化、核心初始化等不同阶段。module_init对应的启动序号为6,在do_initcalls函数中执行。驱动的具体启动顺序在同一优先级下由Makefile中的.o文件链接次序决定。可通过system.map查看详细次序。

2011

被折叠的 条评论
为什么被折叠?



