2015-05-01 27 views
1

當我正在瀏覽linux內核代碼時,我發現內核的入口點是i386_start_kernel()函數,它正在做所有的早期設置,然後調用start_kernel()。 現在,當我搜索start_kernel()時,發現它在多個.c文件中定義爲: Bootp.c,Main.c在/ boot下,並且再次在/ init下運行Main.c。哪個start_kernel()函數被使用?

根據我的理解,它應該從Main.c下的/ init。但是我仍然不清楚它。如果有人可以確認哪個start_kernel()被調用,或者解釋哪個start_kernel()是爲了什麼,那將會很棒。

+1

在'arch/x86/kernel/head_32.S'你已經跳轉到'i386_start_kernel()'。在'arch/x86/kernel/head32.c'中定義'i386_start_kernel()'。 'i386_start_kernel()'函數調用'init/main.c'中定義的'start_kernel()'。 –

+0

似乎這個問題是回答[這裏](http://stackoverflow.com/questions/2589845/what-are-the-first-operations-that-the-linux-kernel-executes-on-boot)。 –

回答

2

來自init/main.cstart_kernel是通用內核代碼的入口點。所有其他的start_kernel函數都可以在Linux內核源碼中找到,可以執行特定於架構的工作。

相關問題