Я изучаю драйверы устройств Linux и, в частности, таймеры и очереди ожидания.Я хочу, чтобы они работали вместе в одном символьном драйвере, где я могу перевести драйвер в спящий режим с помощью команды управления вводом-выводом, в то время как я продолжаю получать прерывания fasync на земле пользователя с помощью таймера.Я заметил, что если я использую
wait_event_interruptible();
, то после истечения времени таймера драйвер выходит из режима ожидания с кодом возврата -512, даже если условие еще не выполнено.Но если я использую
wait_event();
, тогда проблема решена.Я прочитал, что wake_up_event_interruptible () возвращает ненулевой код возврата, если прерывание пробуждает процесс.
я правильно понимаю, что таймер прерывает процесс, который его добавляет (я не могу найти никаких доказательств этого в текстах) какиз моего понимания функция таймера становится независимой от состояния процесса, который ее добавил.