在某些 PCI 硬件的设备驱动程序中,我有一个 ioctl
调用等待 PCI 总线上的传入中断。使用 wait_queue_head_t
,我通过调用 schedule()
使任务进入休眠状态。
然后,当 PCI 总线上出现中断时,irq_handler
函数会唤醒此任务。一切似乎都正常工作。
我的问题是如何区分 schedule()
调用返回是因为我的 irq_handler
函数唤醒了它,还是因为发送了一些信号?
我是否必须通过 irq_handler
函数中的标志自行处理?
最佳答案
在 schedule
调用之后,类似这样的事情:
if (signal_pending(current)) {
retval = -EINTR;
关于linux - 如何知道 schedule() 调用何时因信号返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832033/