Linux カーネルの元のコードは次のとおりです。
static inline void __raw_spin_lock_irq(raw_spinlock_t *lock)
{
local_irq_disable();
preempt_disable();
spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);
}
ローカルIRQが無効になった後、現在のパスをプリエンプトできる実行パスはないと思います。
すべての一般的なハード IRQ が無効になっているため、softirq は発生せず、スケジュール ホイールをキックするティックもありません。現在の道は安全だと思います。では、なぜあるのpreempt_disable()
ですか?