Как защитить данные, используемые несколькими обработчиками прерываний в ядре Linux?

Как я понимаю, если в обработчике прерываний есть какие-то данные, которые используются совместно с другим процессом, они должны быть защищены с помощью спин-блокировки, также нам необходимо отключить локальное прерывание. Но что, если данные распределяются между несколькими обработчиками прерываний, как я могу их защитить?

2 ответа

Решение

Всякий раз, когда есть critical section (CS) который может быть запущен в interrupt context, вы используете spinlock чтобы защитить его, не имеет значения, если CS делится между interrupt handler и process или между interrupt handlers,

Резон, почему вы не используете semaphore или же mutex очевидно, потому что вы не можете спать в interrupt context,

Обработчики прерываний не могут быть вытеснены и не реентерабельны, поэтому нет параллельного доступа к данным.

Другие вопросы по тегам