【问题标题】:How to know when a schedule() call is returning because of a signal?如何知道 schedule() 调用何时因为信号而返回?
【发布时间】:2009-12-02 10:31:28
【问题描述】:

在某些 PCI 硬件的设备驱动程序中,我有一个 ioctl 调用,它等待 PCI 总线上的传入中断。使用wait_queue_head_t,我通过调用schedule() 使任务进入休眠状态。

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

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

我必须自己在irq_handler函数中使用标志来处理它吗?

【问题讨论】:

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


    【解决方案1】:

    schedule 调用之后,类似这样的事情:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-09
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2015-07-13
      相关资源
      最近更新 更多