2

デバイス関数がデバイスへのアクセスを制御するスピンロックを保持しているとします。ロックが保持されている間、デバイスは割り込みを発行します。これにより、割り込みハンドラーが実行されます。割り込みハンドラも、デバイスにアクセスする前にロックを取得する必要があります。

割り込みハンドラが、最初にロックを解除したコードと同じプロセッサで実行されるとします。

スピンロックを保持すると、関連するプロセッサでのプリエンプションが無効になることを知っている場合、スピンロックを保持するコードが別のプロセッサで実行される可能性はありますか (このプロセッサでのプリエンプションのため)。(これは SMP マシンであると想定しています)

4

1 に答える 1

0
スピンロックを保持するコードが別のプロセッサで実行される可能性はありますか (このプロセッサでのプリエンプションのため)?

いいえ、コードは割り込みハンドラが戻るのを待ち続けます。

spin_lock_irq*()またはspin_lock_bh()、softirqs/tasklets からも保護したい場合は、 を使用してください。

于 2013-08-31T14:47:43.553 に答える