網(wǎng)站的制作優(yōu)化網(wǎng)站收費(fèi)標(biāo)準(zhǔn)
內(nèi)核中斷與ThreadedIRQ
文章目錄
- 內(nèi)核中斷與ThreadedIRQ
- 1、Threaded IRQ介紹
- 2、Threaded IRQ相關(guān)API
- 3、驅(qū)動(dòng)實(shí)現(xiàn)
- 4、驅(qū)動(dòng)驗(yàn)證
當(dāng) Interrupt 觸發(fā)時(shí),Interrupt handler 應(yīng)該執(zhí)行得非???,它不應(yīng)該運(yùn)行更多的時(shí)間(它不應(yīng)該執(zhí)行耗時(shí)的任務(wù))。 如果我們有執(zhí)行更多任務(wù)的中斷處理程序,那么我們需要將其分成上半部分和下半部分。
上半部分只是我們的中斷處理程序。 如果我們想做更少的工作,那么上半部分就綽綽有余了。 在那種情況下不需要下半部分。 但是如果我們?cè)谥袛嗝袝r(shí)有更多的工作,那么我們需要下半部分。 下半部分在未來(lái)更方便的時(shí)間運(yùn)行,并啟用所有中斷。 因此,下半部分的工作是執(zhí)行中斷處理程序未執(zhí)行的任何與中斷相關(guān)的工作。
ThreadIRQ為L(zhǎng)inux內(nèi)核下半部分處理機(jī)制之一。本文將詳細(xì)介紹如何使用ThreadIRQ。
1、Threaded IRQ介紹
在我們之前的教程中看到我們介紹了Linux內(nèi)核中斷中的下半部分工作機(jī)制(Workqueue、softirq、Tasklets),我們必須注冊(cè)這些 下半部分處理函數(shù)并要求內(nèi)核調(diào)用這些下半部分處理函數(shù)。 為了進(jìn)一步簡(jiǎn)化該過(guò)程,Linux 引入了線程化 IRQ。 使用這個(gè)特性,Linux 就像是,你只要給我處理函數(shù)(上半部分和下半部分),我會(huì)在合適的時(shí)間調(diào)用這些函數(shù)。 所以,有了這個(gè)線程化的 IRQ?