1. 程式人生 > >void disable_irq(int irq); void disable_irq_nosync(int irq); void enable_irq(int irq)的區別

void disable_irq(int irq); void disable_irq_nosync(int irq); void enable_irq(int irq)的區別

呼叫這些函式中的任何一個都會更新可程式設計中斷控制器(PIC)中指定中斷的掩碼,因而,這樣就可以在所有的處理器上禁止或者啟動 IRQ。對這些函式的呼叫是可以巢狀的――如果 disable_irq 被成功呼叫兩次,在 IRQ 真正重新開啟之前,需要執行兩次 enable_irq 呼叫。從一箇中斷處理程式中呼叫這些函式是可以的,但是在處理某個 IRQ 時使能這個 IRQ,並不是一個好習慣。

首先enable_irq是使能IRQ.

disable_irq是禁止IRQ.不但會禁止給定的中斷,而且也會等待當前正在執行的中斷處理程式完成

 disable_irq_nosync 是立即返回的。這樣,使用後者將會更快,但是可能會讓你的驅動程式處於競態下。