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