linux中斷申請函數(shù)flags

int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)

irqflags參數(shù)說明:

一、以下標(biāo)志對應(yīng)于linux/ioport.h中定義的IORESOURCE_IRQ_*來選擇中斷行行為。當(dāng)在沒有指定IRQF_TRIGGER的情況下請求中斷時(shí),設(shè)置應(yīng)該假定為“已配置”,這可能是根據(jù)每個(gè)機(jī)器或固件初始化而設(shè)置的。

#define IRQF_TRIGGER_NONE 0x00000000
#define IRQF_TRIGGER_RISING 0x00000001 上升沿觸發(fā)中斷
#define IRQF_TRIGGER_FALLING 0x00000002 下降沿觸發(fā)中斷
#define IRQF_TRIGGER_HIGH 0x00000004 高電平觸發(fā)中斷
#define IRQF_TRIGGER_LOW 0x00000008 低電平觸發(fā)中斷
#define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)
#define IRQF_TRIGGER_PROBE 0x00000010

二、以下標(biāo)志只被內(nèi)核作為irq處理程序的一部分使用。

  • IRQF_SHARED -允許在多個(gè)設(shè)備之間共享irq
  • IRQF_PROBE_SHARED -當(dāng)調(diào)用者期望發(fā)生共享不匹配時(shí)設(shè)置
    標(biāo)記這個(gè)中斷為定時(shí)器中斷
  • IRQF_PERCPU -中斷是每個(gè)cpu
  • IRQF_NOBALANCING -標(biāo)志從irq平衡中排除這個(gè)中斷
  • IRQF_IRQPOLL——中斷用于輪詢(只有在共享中斷中首先注冊的中斷出于性能考慮)
    IRQF_ONESHOT -中斷在hardirq處理結(jié)束后沒有重新啟用。
    用于線程中斷,需要保持irq行禁用,直到線程處理程序已經(jīng)運(yùn)行。
  • IRQF_NO_SUSPEND -不要在掛起期間禁用IRQ。不能保證此中斷將從掛起狀態(tài)喚醒系統(tǒng)。
  • IRQF_FORCE_RESUME - Force enable it on resume即使設(shè)置了IRQF_NO_SUSPEND
    IRQF_NO_THREAD中斷不能被線程化
  • IRQF_EARLY_RESUME -在系統(tǒng)評分期間早期恢復(fù)IRQ,而不是在設(shè)備恢復(fù)時(shí)間。
  • IRQF_COND_SUSPEND -如果IRQ與NO_SUSPEND用戶共享,在掛起中斷后執(zhí)行這個(gè)中斷處理程序。對于系統(tǒng)喚醒設(shè)備,用戶需要在其中斷處理程序中實(shí)現(xiàn)喚醒檢測。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容