1. 程式人生 > >spin_lock_irq和spin_lock_irqsave區別

spin_lock_irq和spin_lock_irqsave區別

 因為在執行中斷處理控制代碼期間,不可能被同一CPU上的軟中斷或程序打斷。但是如果有不同的中斷處理控制代碼訪問該共享資源,那麼需要在中斷處理控制代碼中使用spin_lock_irq和spin_unlock_irq來保護對共享資源的訪問。

使用spin_lock_irq和spin_unlock_irq時,完全可以用spin_lock_irqsave和spin_unlock_irqrestore取代,具體應該使用哪一個也需要依情況而定,如果可以確信在對共享資源訪問前中斷是enable的,那麼使用spin_lock_irq更好一些。

因為它比spin_lock_irqsave要快一些,但是如果你不能確定是否中斷enable,那麼使用spin_lock_irqsave和spin_unlock_irqrestore更好,因為它將恢復訪問共享資源前的中斷標誌而不是直接enable中斷。 當然,有些情況下需要在訪問共享資源時必須中斷失效,而訪問完後必須中斷使能,這樣的情形使用spin_lock_irq和spin_unlock_irq最好。