В драйвере устройства для некоторого оборудования PCI у меня есть вызов ioctl
, который ожидает входящего прерывания на шине PCI. Используя wait_queue_head_t
, я усыпил задачу, вызвав schedule()
.
Затем функция irq_handler
запускает эту задачу, когда на шине PCI возникает прерывание. Кажется, все работает правильно.
У меня вопрос, как определить, возвращается ли вызов schedule()
из-за того, что моя функция irq_handler
разбудила его, или потому, что какой-то сигнал был отправлен?
Нужно ли обрабатывать это самостоятельно с флагами в функции irq_handler
?