http://blog.chinaunix.net/uid-21977330-id-3755609.html
request_threaded_irq() 是Linux kernel 2.6.30之後新加的irq handler API
handler將不是在interrupt context裡執行;而是在新增的thread中執行,如此可以確保不被綁架,擁有所有workqueue的特性,卻省去了創建、初始化、調度workqueue等多個步驟。
支援threaded interrupt handler
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是在發生中斷時,首先要執行的動作,類似舊機制中的top half
最後可return IRQ_WAKE_THREAD來喚醒中斷線程,或return IRQ_HANDLE而不執行中斷線程
thread_fn是要在線程中執行的動作,類似舊機制中的bottom half
irqsflasg多了一個IRQF_ONESHOT,用來指示在中斷線程執行完之後再打開該中斷
沒有留言:
張貼留言