2009-12-02 79 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; 
相关问题