在某些PCI硬件的设备驱动程序中,我进行了ioctl
调用,等待PCI总线上的传入中断。使用wait_queue_head_t
,我通过调用schedule()
将任务置于睡眠状态。
然后,irq_handler
函数在PCI总线上引发中断时唤醒此任务。一切似乎都正常。
我的问题是如何区分schedule()
调用是否因为我的irq_handler
函数被唤醒而返回,还是因为某些信号已被发送?
我是否必须自己使用irq_handler
函数中的标记来处理它?</ p>
答案 0 :(得分:2)
在schedule
电话之后的某些事情:
if (signal_pending(current)) {
retval = -EINTR;