2009-12-02 29 views
1

在某些PCI硬件的設備驅動程序中,我有一個ioctl調用,它等待PCI總線上的傳入中斷。使用wait_queue_head_t,我通過撥打schedule()讓任務進入睡眠狀態。如何知道schedule()調用何時因信號而返回?

然後,irq_handler函數在PCI總線上產生中斷時喚醒此任務。一切似乎正常工作。

我的問題是如何區分schedule()呼叫是因爲我的irq_handler函數喚醒它還是因爲某些信號已被髮送而返回?

我必須自己處理irq_handler函數中的標誌嗎?

回答

2

沿着這個東西線,在schedule調用之後:

if (signal_pending(current)) { 
    retval = -EINTR; 
相關問題