Два обработчика прерываний для одного и того же драйвера

Вы получаете эту ошибку, когда вы установили 2 разные архитектуры или версии одного пакета. Если вы все еще получаете ошибку с apt-get -f install попробуйте использовать synaptic приложение (в левой колонке сломанные пакеты) вы можете сделать это нормально.

4
26.11.2018, 17:12
2 ответа

зарегистрировать два разных IRQ и установить два разных обработчика для одного драйвера

"Это так просто". Ответ на вопрос "возможно ли" - "да".


Подпрограммы прерывания устройства не будут прерывать друг друга на одном ЦП.

Согласно LDD3 (теперь это довольно старая версия), можно гарантировать, что одна процедура обработки прерывания не будет выполняться на нескольких процессорах одновременно. Я не уверен, что имелось в виду - я не могу представить, что это применимо к прерываниям таймера.

Я ожидаю, что в вашем драйвере будет возможно одновременное выполнение разных подпрограмм обработки прерываний на разных процессорах.

Тем не менее, обычная «спин-блокировка irqsave» для достижения взаимного исключения там, где это необходимо, в этом случае все еще должна работать нормально.

Возможно, вы захотите еще раз проверить, включен ли сторожевой таймер NMI и блокировка в вашей тестовой системе :). Сторожевой таймер NMI сработает, если процессор застрянет в процедуре прерывания.

https://static.lwn.net/images/pdf/LDD3/ch10.pdf

1
27.01.2020, 20:59

Это вполне возможно. При регистрации обработчика прерывания драйвер сообщает ядру адрес функции, которую следует вызывать при срабатывании прерывания. Драйвер может настроить столько прерываний, сколько пожелает, и все они могут указывать на одну и ту же процедуру обслуживания или все они могут указывать на свои собственные (или на какую-то другую комбинацию вещей).

См. этот ответ для более подробной информации о том, как на самом деле обрабатываются прерывания.

1
27.01.2020, 20:59

Теги

Похожие вопросы