Linux 系統中的中斷是不是沒有中斷優先級


Linux在處理中斷時,會禁止其他中斷,若有中斷優先級,應該不能禁止中斷。

5 个解决方案

#1


看你申請的是快速中斷還是慢速中斷了,快速中斷執行時禁止其他所有中斷。
在 request_irq()中的flags參數的SA_INTERRUPT位,當這位被置時,表明申請了快速中斷。

#2


1)linux響應中斷后,將響應程序分成兩部分:頂部和底部;在執行完頂部后,就打開中斷(清掉了相關的中斷標志);底部由系統調度運行,底部運行時,允許其他中斷;
2)如果在申請中斷request_iqr()時,使用了參數IRQF_DISABLED,則在調用中斷處理函數時,屏蔽所有中斷,直到全部運行完畢,從而使中斷得到快速執行;
3)在linux-2.6.24之后,參數SA_INTERRUPT已經被IRQF_DISABLED取代。

#3


如果在申請中斷request_iqr()時,沒有使用了參數IRQF_DISABLED,此時又有中斷到來怎么辦?

#4


引用 3 樓 tiancaixulun 的回復:
如果在申請中斷request_iqr()時,沒有使用了參數IRQF_DISABLED,此時又有中斷到來怎么辦?

前一中斷執行完頂部后,就退出了中斷狀態,系統調度運行各種程序(也包含前一中斷的底部程序);來了新的中斷就進中斷,也是執行頂部后退出。
  在調度運行時,原來的中斷底部程序具有比一般程序運行的優先權。

#5


中斷沒有優先級,這個是設計的時候做的選擇,跟能不能禁止中斷關系不大,實際上中斷處理程序執行的時候,在有些地方還是會禁止中斷的。
————————————————
據說回帖可以掙分,沒分了。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com