這個函數是做了關閉中斷操作。和后面的local_irq_enable相對應。說明啟動的下面函數是不允許被中斷搶占的。這個函數追下去會發(fā)現下面的代碼:

static inline void native_irq_disable(void){    asm volatile("cli": : :"memory");
}

這個寫法是linux的內聯匯編寫法。在C語言中寫匯編語言。實際上調用的是匯編cli命令。cli命令是禁用中斷功能。http://rock3.info/blog/2013/11/24/linux-c%E4%B8%AD%E8%B0%83%E7%94%A8%E6%B1%87%E7%BC%96%E7%94%A8%E6%B3%95/

接著start_kernel,linux關閉完中斷之后,還使用了一個變量early_boot_irqs_disabled來標記已經關閉irq了。

這里稍微說說irq的概念,我們把中斷分為兩個概念,一個是上半部,一個是下半部,上半部指的是硬件直接要求立即響應的中斷。下半部指的是可以在某個特定時間之后執(zhí)行的。這里的IRQ就是一個上半部概念。每個硬件設備都有一個irq線,通過這個線把中斷描述符傳遞給CPU,CPU獲取中斷之后立即執(zhí)行對應已經注冊的操作。

# boot_cpu_init()

這個函數功能是初始化第一個CPU。

        		

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式