linux do_initcall原理分析


inlclude\linux\init.h
#define __define_initcall(level,fn,id) \
	static initcall_t __initcall_##fn##id __used \
	__attribute__((__section__(".initcall" level ".init"))) = fn

其中 initcall_t 是一个函数指针类型:


而属性 __attribute__((__section__())) 则表示把对象放在一个这个由括号中的名称所指代的section中。


 1) __define_initcall(level,fn)的作用就是指示编译器把一些初始化函数


        的指针(即:函数起始地址)按照顺序放置一个名为 .initcall.init 的


        section中,这个section又被分成了7个子section,它们按顺序排


列。


        在内核初始化阶段,这些放置到这个section中的函数指针将供


        do_initcalls() 按顺序依次调用,来完成相应初始化。


你可能感兴趣的:(linux,原理分析,do_initcall)