linux-2.6.33/preempt_enable()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#u5b83244]
#backlinks
*説明 [#jae5907d]
-パス: [[linux-2.6.33/include/linux/preempt.h]]
-FIXME: プリエンプションカウントをデクリメントし、
プリエンプションを許可状態にする。
-もしスケジュールする必要があればスケジュールを行う。
--プリエンプションカウント 0 でプリエンプション許可、
1 以上でプリエンプション禁止
--つまり preempt_disable()/preempt_enable() はネスト可能。
ネストの例
----------
preempt_disable(); プリエンプションカウント 0(許可) ->...
...
preempt_disable(); プリエンプションカウント 1(禁止) ->...
...
...
preempt_enable(); プリエンプションカウント 2(禁止) ->...
...
preempt_enable(); プリエンプションカウント 1(禁止) ->...
--[[linux-2.6.33/preempt_disable()]]
**引数 [#j9539c89]
-なし
**返り値 [#q34d3a0e]
-なし
**参考 [#k0eb1fa2]
*実装 [#j8d4268f]
#ifdef CONFIG_PREEMPT
-プリエンプトが有効の場合
--[[linux-2.6.33/CONFIG_PREEMPT]]
(略)
#define preempt_enable() \
do { \
preempt_enable_no_resched(); \
-プリエンプションカウントをデクリメントする。
--[[linux-2.6.33/preempt_enable_no_resched()]]
barrier(); \
-メモリバリア。
--バリアの後に続く命令にて、
変更後のプリエンプションカウントを読み出せることを保証す...
--[[linux-2.6.33/barrier()]]
preempt_check_resched(); \
-
--[[linux-2.6.33/preempt_check_resched()]]
} while (0)
(略)
#else
-プリエンプトが無効の場合
#define preempt_disable() do { } while (0)
-何もしない
(略)
#endif
*コメント [#k80f0e79]
終了行:
*参照元 [#u5b83244]
#backlinks
*説明 [#jae5907d]
-パス: [[linux-2.6.33/include/linux/preempt.h]]
-FIXME: プリエンプションカウントをデクリメントし、
プリエンプションを許可状態にする。
-もしスケジュールする必要があればスケジュールを行う。
--プリエンプションカウント 0 でプリエンプション許可、
1 以上でプリエンプション禁止
--つまり preempt_disable()/preempt_enable() はネスト可能。
ネストの例
----------
preempt_disable(); プリエンプションカウント 0(許可) ->...
...
preempt_disable(); プリエンプションカウント 1(禁止) ->...
...
...
preempt_enable(); プリエンプションカウント 2(禁止) ->...
...
preempt_enable(); プリエンプションカウント 1(禁止) ->...
--[[linux-2.6.33/preempt_disable()]]
**引数 [#j9539c89]
-なし
**返り値 [#q34d3a0e]
-なし
**参考 [#k0eb1fa2]
*実装 [#j8d4268f]
#ifdef CONFIG_PREEMPT
-プリエンプトが有効の場合
--[[linux-2.6.33/CONFIG_PREEMPT]]
(略)
#define preempt_enable() \
do { \
preempt_enable_no_resched(); \
-プリエンプションカウントをデクリメントする。
--[[linux-2.6.33/preempt_enable_no_resched()]]
barrier(); \
-メモリバリア。
--バリアの後に続く命令にて、
変更後のプリエンプションカウントを読み出せることを保証す...
--[[linux-2.6.33/barrier()]]
preempt_check_resched(); \
-
--[[linux-2.6.33/preempt_check_resched()]]
} while (0)
(略)
#else
-プリエンプトが無効の場合
#define preempt_disable() do { } while (0)
-何もしない
(略)
#endif
*コメント [#k80f0e79]
ページ名: