*参照元 [#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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS