代码之家  ›  专栏  ›  技术社区  ›  Didier Trosset

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

  •  1
  • Didier Trosset  · 技术社区  · 15 年前

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

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

    我的问题是如何区分 时间表() 因为我的 IrQuier-Hand 函数唤醒它,还是因为发送了一些信号?

    我必须自己拿着旗子 IrQuier-Hand 功能?

    1 回复  |  直到 15 年前
        1
  •  2
  •   caf    15 年前

    沿着这条线,在 schedule 呼叫:

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