国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
拋棄中斷bottom half,使用中斷線程吧
  在linux里,中斷處理分為頂半(top half),底半(bottomhalf),在頂半里處理優(yōu)先級比較高的事情,要求占用中斷時間盡量的短,在處理完成后,就激活底半,有底半處理其余任務(wù)。底半的處理方式主要有soft_irq,tasklet,workqueue三種,他們在使用方式和適用情況上各有不同。soft_irq用在對底半執(zhí)行時間要求比較緊急或者非常重要的場合,主要為一些subsystem用,一般driver基本上用不上。tasklet和work queue在普通的driver里用的相對較多,主要區(qū)別是tasklet是在中斷上下文執(zhí)行,而workqueue是在process上下文,因此可以執(zhí)行可能sleep的操作。

2.6.30里,在ingo molnar的RT tree里存在有一段時間的interruptthread終于merge到mainline了。此時如果使用request_threaded_irq申請的中斷,handler不是在中斷上下文里執(zhí)行,而是在新創(chuàng)建的線程里執(zhí)行,這樣,該handler非常像執(zhí)行workqueue,擁有所有workqueue的特性,但是省掉了創(chuàng)建,初始化,調(diào)度workqueue的繁多步驟。處理起來非常簡單。讓我們看看這個接口。

int request_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn,                         unsigned long irqflags, const char *devname, void *dev_id)和request_irq非常類似,irq是中斷號, handler是在發(fā)生中斷時,首先要執(zhí)行的code,非常類似于頂半,該函數(shù)最后會return IRQ_WAKE_THREAD來喚醒中斷線程,一般設(shè)為NULL,用系統(tǒng)提供的默認(rèn)處理。thread_fn,是要在線程里執(zhí)行的handler,非常類似于底半。 后三個參數(shù)基本和request_irq相同。irqsflags新增加了一個標(biāo)志,IRQF_ONESHOT,用來標(biāo)明是在中斷線程執(zhí)行完后在打開該中斷,該標(biāo)志非常有用,否則中斷有可能一直在頂半執(zhí)行,而不能處理中斷線程。例如對于gpio level中斷,如果不設(shè)置該位,在頂半執(zhí)行完成后,會打開中斷,此時由于電平?jīng)]有變化,馬上有執(zhí)行中斷,永遠沒有機會處理線程。下邊一個實際例子來說明它的應(yīng)用。在手機平臺中,檢測耳機的插入一般是通過耳機插孔中機械變化導(dǎo)致一個baseband gpio的電平的變化,在該gpio中斷里進行耳機插入處理。但是耳機插入一般都有個抖動的過程,需要消抖處理。最簡單的辦法是在中斷發(fā)生后,延時一段時間(例如200ms),然后再檢查GPIO狀態(tài)是否穩(wěn)定來確定是否有效插入。如果用老的中斷方式,不得不用workqueue的方式,你需要在頂半里激活一個delay 200ms的workqueue,然后在workqueue里檢查。用線程化的處理方式,你僅僅需要在thread_fn里sleep 200ms,然后在檢查即可???,事情就這么簡單!
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
十四、Linux驅(qū)動程序開發(fā)(10) - 中斷
Linux 內(nèi)核 tasklet 機制和工作隊列
softirq(軟中斷)下半部中tasklet與workqueue的區(qū)別
linux kernel的中斷子系統(tǒng)之(八):softirq
中斷喚醒系統(tǒng)流程
【原創(chuàng)】Linux中斷子系統(tǒng)(三)-softirq和tasklet
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服