粗略的看了下,kernel大致的初始化流程为:
setup.c kernel/\arch\parisc\kernel start_parisc // init arm
main .c kernel/init/ start_kernel // init
main .c kernel/init/ rest_init
main .c kernel/init/ kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
wait untill kernel_thread is ready
main .c kernel_init
main .c do_basic_setup
main .c do_initcalls
main .c do_one_initcall
在do_initcalls函数中,会有这样一个调用:
for (fn = __early_initcall_end; fn < __initcall_end; fn++)
do_one_initcall(*fn);
那么 __early_initcall_end和 __initcall_end是