FreeBSD 4.0 Kernel Hacking Guide--kern/init_m

kern/init_main.c

mi_startup(),;171行.;由;locore;呼叫,;locore;为;kernel;binary;最先被执行
的程式区段.;locore;对机器环境进行初始,;准备一个让;kernel;可以
顺利执行的环境,;例如准备一个可以让;gcc;compile;的式码执行的
环境.;在;locore;的最後会呼叫,;mi_startup().;mi_startup();利
用;linker;会主动将同一;section;的资料组合成连续区块的特性,;收
集所有;sub-system;的;initial;function.;这部分功能由;macro
SYSINIT(),;sys/kernel.h,;225行,;达成.;mi_startup;依据收集到
的资料,;依其顺序执行各;sub-system;的;initial;function.;各个
sub-system;的执行顺序定义在;sysinit_sub_id,;sys/kernel.h,;107行,
mi_startup;从小到大依序执行.;同一;sub-system;若有多个;initial
function,;则由;sysinit_elem_order,;sys/kernel.h,;163行,;定
义之次序执行.

    推荐阅读