中斷標志位 IRQF_ONESHOT


one shot本身的意思的只有一次的,結合到中斷這個場景,則表示中斷是一次性觸發的,不能嵌套。對於primary handler,當然是不會嵌套,但是對於threaded interrupt handler,我們有兩種選擇,一種是mask該interrupt source,另外一種是unmask該interrupt source。

一旦mask住該interrupt source,那么該interrupt source的中斷在整個threaded interrupt handler處理過程中都是不會再次觸發的,也就是one shot了。這種handler不需要考慮重入問題。

具體是否要設定one shot的flag是和硬件系統有關的,我們舉一個例子,比如電池驅動,電池里面有一個電量計,是使用HDQ協議進行通信的,電池驅動會注冊一個threaded interrupt handler,在這個handler中,會通過HDQ協議和電量計進行通信。對於這個handler,通過HDQ進行通信是需要一個完整的HDQ交互過程,如果中間被打斷,整個通信過程會出問題,因此,這個handler就必須是one shot的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM