Какую информацию сохраняет аргумент flag в spin_lock_irqsave? - PullRequest
0 голосов
/ 06 июня 2019

Я знаю, что в irqsave версия спин-блокировки записывает состояние прерывания при получении блокировки и восстанавливает состояние прерывания при снятии блокировки.

Я сомневаюсь, скажем, если имеется всего 10 векторов прерываний и 2 из нихв отключенном состоянии (предположим, что драйвер устройства отключил эти два вектора прерывания) во время захвата с использованием варианта irqsave.Записывает ли flag аргумент spin_lock_irqsave() состояния прерывания и разрешает только 8 прерываний во время восстановления?Что, если эти 2 отключенных прерывания будут включены с других процессоров после сохранения состояния в аргументе flag?

1 Ответ

2 голосов
/ 06 июня 2019

Функция spin_lock_irqsave не маскирует и не маскирует определенные источники прерываний; он отключает обработку всех маскируемых прерываний на вызывающем процессоре. Блокировки прерывания создают критические области кода, которые являются непрерывными.

...