ioctl пользовательского ядра Linux резко перестает отвечать и запускается снова через несколько минут

Установка:
У меня есть процесс CP, который вызывает IOCTL. Затем обработчик IOCTL ядра записывает что-то в оборудование и возвращает результат. Пробивка сторожевого таймера происходит через определенные промежутки времени.

Проблема:
Используя распечатки отладки, я убедился, что процесс CP и модуль ядра прекращают распечатывать отладки одновременно. Модуль ядра всегда завершал свою задачу. Через пару минут отладки снова начинают печататься. Пока проблема существует, я проверил, что само ядро ​​​​не зависло, запустив ls, top и т. Д.

Я понимаю, что проблема может быть не в модуле ядра. Итак, с чего мне начать поиск?


person Taroko    schedule 14.03.2012    source источник


Ответы (2)


Использует ли ваш обработчик IOCTL блокировку доступа ввода-вывода к оборудованию? Если бы обработчику IOCTL пришлось ждать ответа оборудования, то время, возможно, превысило бы лимит времени сторожевого таймера и вызвало бы перезагрузку сторожевого таймера. Возможно, проверка доступа к оборудованию — это направление для начала.

person Wayne    schedule 22.03.2012

Итак, с чего мне начать поиск?

Я бы начал с использования strace -eioctl ..., чтобы проверить, происходят ли вызовы вообще, пока существует проблема.

person Armali    schedule 17.03.2014