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