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