歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> linux內核是中斷下半部

linux內核是中斷下半部

日期:2017/3/3 13:01:23   编辑:Linux內核

首先闡述下為什麼內核要將中斷分成上下半部

因為中斷本身打斷了正常的程序執行,中斷中不能進行任務調度,所以中斷需要快返回,但是某些操作必須在中斷中執行。

如果內核需要執行一個硬件相關、時間敏感、不能被中斷的操作,那麼這些操作就應該放到上半部中,其他能夠推遲的操作應該放到下半部中去,這樣完成了中斷中必須完成的操作,又能很好的進行調度。

看看內核對於下半部的支持

首先說以下如何添加自己的軟中斷程序

首先添加自己的軟中斷類型,值越低優先級越高

用open_softirq增加相對應的中斷處理函數

用raise_softirq將自己的軟件中斷有效

之後內核在do_softirq中便能調用軟件中斷了

然後看看tasklet

通過以上3個方法來聲明自己的tasklet

當然要編寫自己的執行函數 void func(unsigned long arg);

通過以上兩個函數,將自己的tasklet加入到調度中去

當然也有相應函數來取消自己的tasklet,這裡不介紹了

接下來看看工作隊列workqueue

通過以上方法能聲明一個work

當然得自己編寫執行函數

通過以上方法將work加入系統workquene

當然也可以創建自己的工作隊列,然後將work加入自己的工作隊列中

Copyright © Linux教程網 All Rights Reserved