在某些PCI硬件的设备驱动程序中,我有一个 ioctl 在PCI总线上等待传入中断的调用。使用 wait_queue_head_t ,我打电话让任务进入睡眠状态 schedule() .
ioctl
wait_queue_head_t
schedule()
然后, irq_handler 函数在PCI总线上引发中断时唤醒此任务。一切似乎都正常。
irq_handler
我的问题是如何区分 时间表() 因为我的 IrQuier-Hand 函数唤醒它,还是因为发送了一些信号?
时间表()
IrQuier-Hand
我必须自己拿着旗子 IrQuier-Hand 功能?
沿着这条线,在 schedule 呼叫:
schedule
if (signal_pending(current)) { retval = -EINTR;