Ну, это зависит от того, приостановит ли реализация atomic_read
ваш код прерывания в ожидании доступности общей переменной. Если это произойдет, вы закончите блокировкой в вашем коде прерывания, и прерывания будут отключены, это опасно.
В общем, если вы отключаете прерывания в блоке кода, нет никакой вероятности, что соответствующее прерывание произойдет в этой общей области, поэтому обычно просто отключить прерывания, получить доступ к общим данным, а затем снова включить прерывания. В коде прерывания вам не нужно ничего делать, так как прерывание не может произойти в середине разделяемого кода блокировки, поэтому вам нужно только проверить значение разделяемой переменной, так как вы выполняете код прерывания, поэтому нет вероятность того, что новое прерывание приходит и изменяет переменную (что не происходит в коде прерывания)
Это плохая идея блокировать обработчик прерываний, вы можете сделать это, например, во FreeBSD, где обработчики прерываний работают с контекстом (как процесс) или когда у вас есть некоторые средства спин-блокировки (занятого ожидания, в цикле) ) так что вы можете подождать, но не выходя из контекста, поскольку прерывания обычно выполняются в контексте процесса, который они прерывают.