Я работаю над улучшением производительности драйвера и должен учитывать возможность взаимоблокировки. В контексте SoftIRQ spin_lock будет удерживаться и защищать некоторую переменную. В этом случае мне следует использовать spin_lock или spin_lock_bh? spin_lock_bh звучит безопаснее, но у меня есть общий вопрос о реализации SoftIRQ.
- одна и та же функция softIRQ может быть запланирована на том же процессоре во время выполнения SoftIRQ -> нам нужно использовать spin_lock_bh в SoftIRQ
- та же функция softIRQ может быть запланирована на другом ЦП, но не на том же ЦП -> мы можем использовать spin_lock в SoftIRQ
Что верно из приведенного выше утверждения?