Как защитить данные, используемые несколькими обработчиками прерываний в ядре Linux?
Как я понимаю, если в обработчике прерываний есть какие-то данные, которые используются совместно с другим процессом, они должны быть защищены с помощью спин-блокировки, также нам необходимо отключить локальное прерывание. Но что, если данные распределяются между несколькими обработчиками прерываний, как я могу их защитить?
2 ответа
Всякий раз, когда есть critical section
(CS
) который может быть запущен в interrupt context
, вы используете spinlock
чтобы защитить его, не имеет значения, если CS
делится между interrupt handler
и process
или между interrupt handlers
,
Резон, почему вы не используете semaphore
или же mutex
очевидно, потому что вы не можете спать в interrupt context
,
Обработчики прерываний не могут быть вытеснены и не реентерабельны, поэтому нет параллельного доступа к данным.