最近、Linuxソースをhttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2からダウンロードしました。linux-2.6.34.1\Documentationフォルダーにあるspinlocks.txtというファイルで以下の段落に出くわしました。
「それは、あなたがそうするコードを持っているなら、それは意味します
cli();
.. critical section ..
sti();
そして、それを行う別のシーケンス
spin_lock_irqsave(flags);
.. critical section ..
spin_unlock_irqrestore(flags);
その場合、それらは相互に排他的ではなく、クリティカル領域は2つの異なるCPUで同時に発生する可能性があります。それ自体は問題ありませんが、クリティカル領域はさまざまなものに対してクリティカルである方がよいでしょう(つまり、互いに踏みつけることはできません)。「」
一部のコードがcli()/ sti()を使用していて、同じコードの他の部分がspin_lock_irqsave(flags)/ spin_unlock_irqrestore(flags)を使用している場合、どのように影響しますか?