*参照元 [#l1bb4bb4] #backlinks *説明 [#p8671691] -パス: [[linux-2.6.33/include/linux/preempt.h]] -プリエンプションカウントをインクリメントし、 プリエンプションを禁止状態にする。 --プリエンプションカウント 0 でプリエンプション許可、 1 以上でプリエンプション禁止 --つまり preempt_disable()/preempt_enable() はネスト可能。 ネストの例 ---------- preempt_disable(); プリエンプションカウント 0(許可) -> 1(禁止) ... preempt_disable(); プリエンプションカウント 1(禁止) -> 2(禁止) ... ... preempt_enable(); プリエンプションカウント 2(禁止) -> 1(禁止) ... preempt_enable(); プリエンプションカウント 1(禁止) -> 0(許可) --[[linux-2.6.33/preempt_enable()]] **引数 [#faa7661b] -なし **返り値 [#kf7ddbbb] -なし **参考 [#nbab6734] *実装 [#q66d597f] #ifdef CONFIG_PREEMPT -プリエンプトが有効の場合 --[[linux-2.6.33/CONFIG_PREEMPT]] (略) #define preempt_disable() \ do { \ inc_preempt_count(); \ -プリエンプションのカウントを 1 上げる。 --[[linux-2.6.33/inc_preempt_count()]] barrier(); \ -メモリバリア。 --バリアの後に続く命令にて、 変更後のプリエンプションカウントを読み出せることを保証する。 --[[linux-2.6.33/barrier()]] } while (0) (略) #else -プリエンプトが無効の場合 #define preempt_disable() do { } while (0) -何もしない (略) #endif *コメント [#o7aaaba5]