request_threaded_irq()參數


 

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) ;
  • irq:表示申請的中斷號。

  • handler:表示中斷服務例程。

  • thread_fn:中斷線程化,此處傳遞的是NULLNULL表示沒有中斷線程化。

    Linux 中,中斷具有最高的優先級。不論在任何時刻,只要產生中斷事件,內核將立即執行相應的中斷
    處理程序,等到所有掛起的中斷和軟中斷處理完畢后才能執行正常的任務,因此有可能造成實時任務得不
    到及時的處理。中斷線程化之后,中斷將作為內核線程運行而且被賦予不同的實時優先級,實時任務可以
    有比中斷線程更高的優先級。這樣,具有最高優先級的實時任務就能得到優先處理,即使在嚴重負載下仍
    有實時性保證。but,並不是所有的中斷都可以被線程化,比如時鍾中斷,主要用來維護系統時間以及定時器
    等,其中定時器是操作系統的脈搏,一旦被線程化,就有可能被掛起,這樣后果將不堪設想,所以不應當
    被線程化。 

     

  • irqflags:表示中斷標志位。

  • devname:表示請求中斷的設備的名稱。

  • dev_id: 對應於request_irq()函數中所傳遞的第五個參數,可取任意值,但必須唯一能夠代表發出中斷請求的設備,通常取描述該設備的結構體。 共享中斷時所用。

 

status = request_threaded_irq(cdfinger->irq, (irq_handler_t)cdfinger_interrupt_handler_up, NULL,
IRQF_TRIGGER_RISING | IRQF_ONESHOT , "cdfinger-irq", cdfinger);

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM