- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#l1bb4bb4]
#backlinks
*説明 [#p8671691]
-パス: [[linux-2.6.33/include/linux/preempt.h]]
-FIXME: これは何?
--説明
-プリエンプションカウントをインクリメントし、
プリエンプションを禁止状態にする。
--プリエンプションカウント 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]