arch/arm/boot/compressed/head.s ----->调用arch/arm/boot/compressed/misc.c的decompress_kernel()
函数解压内核----->arch/arm/kernel/head.S---->arch/arm/kernel/head-common.S初始化 ---->init/main.c的asmlinkage void __init start_kernel(void)
注意在arch/arm/kernel/smp.c文件中有一个启动多核处理器的函数 void __init smp_prepare_boot_cpu(void),被init/main.c的asmlinkage void __init start_kernel(void)调用
函数解压内核----->arch/arm/kernel/head.S---->arch/arm/kernel/head-common.S初始化 ---->init/main.c的asmlinkage void __init start_kernel(void)
注意在arch/arm/kernel/smp.c文件中有一个启动多核处理器的函数 void __init smp_prepare_boot_cpu(void),被init/main.c的asmlinkage void __init start_kernel(void)调用
本文深入探讨了Linux内核压缩解压过程,从头文件调用到初始化,再到启动多核处理器的详细步骤。通过分析arch/arm/boot/compressed/head.s、misc.c、head.S和init/main.c等关键文件,揭示了解压内核的内部机制,并介绍了smp_prepare_boot_cpu函数的作用。

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



