如何知道schedule()调用何时因信号而返回?

时间:2009-12-02 10:31:28

标签: linux linux-kernel scheduling signals linux-device-driver

在某些PCI硬件的设备驱动程序中,我进行了ioctl调用,等待PCI总线上的传入中断。使用wait_queue_head_t,我通过调用schedule()将任务置于睡眠状态。

然后,irq_handler函数在PCI总线上引发中断时唤醒此任务。一切似乎都正常。

我的问题是如何区分schedule()调用是否因为我的irq_handler函数被唤醒而返回,还是因为某些信号已被发送?

我是否必须自己使用irq_handler函数中的标记来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:2)

schedule电话之后的某些事情:

if (signal_pending(current)) {
    retval = -EINTR;