linux-2.6.33/add_preempt_count()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#q276e33b]
#backlinks
*説明 [#xe7b8e44]
-パス: 複数あり
--プリエンプションのデバッグが有効: [[linux-2.6.33/kernel...
--プリエンプションのデバッグが無効: [[linux-2.6.33/includ...
-プリエンプションカウントに指定された値を加算する。
**引数 [#u9047e01]
-int val
--プリエンプションカウントに加算する値。
**返り値 [#hedb6c2f]
-なし
**参考 [#i688edaa]
*実装 [#meee966e]
**プリエンプションのデバッグが有効: kernel/sched.c [#zb5f...
-プリエンプションのデバッグが有効の場合、こちらが実行される
void __kprobes add_preempt_count(int val)
{
-kprobes の対象
--[[linux-2.6.33/__kprobes]]
#ifdef CONFIG_DEBUG_PREEMPT
-プリエンプションのデバッグが有効の場合
--[[linux-2.6.33/CONFIG_DEBUG_PREEMPT]]
/*
* Underflow?
*/
if (DEBUG_LOCKS_WARN_ON((preempt_count() < 0)))
return;
-プリエンプションカウントがアンダーフローしていたら警告す...
--[[linux-2.6.33/DEBUG_LOCKS_WARN_ON()]]
--[[linux-2.6.33/preempt_count()]]
#endif
preempt_count() += val;
-プリエンプションカウントに指定された値を加算する。
--[[linux-2.6.33/preempt_count()]]
#ifdef CONFIG_DEBUG_PREEMPT
/*
* Spinlock count overflowing soon?
*/
DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >=
PREEMPT_MASK - 10);
-プリエンプションカウントがオーバーフローしそうなときに警...
(preemption_disable() をネストさせすぎているときなど)
--[[linux-2.6.33/PREEMPT_MASK]]
#endif
if (preempt_count() == val)
trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_A...
-プリエンプションが有効から無効になったとき、
トレースポイントとして記録しておく。
--プリエンプションカウントが 0(有効) -> val(無効)、
という変化をしたとき、条件が真になる。
--[[linux-2.6.33/trace_preempt_off()]]
--[[linux-2.6.33/CALLER_ADDR0]]
--[[linux-2.6.33/get_parent_ip()]]
--[[linux-2.6.33/CALLER_ADDR1]]
}
EXPORT_SYMBOL(add_preempt_count);
-特にライセンスを区別せずシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL()]]
**プリエンプションのデバッグが無効: include/linux/preempt...
#if defined(CONFIG_DEBUG_PREEMPT) || defined(CONFIG_PREE...
-プリエンプションのデバッグが有効、
あるいはプリエンプションの追跡が有効の場合
--[[linux-2.6.33/CONFIG_DEBUG_PREEMPT]]
--[[linux-2.6.33/CONFIG_PREEMPT_TRACER]]
extern void add_preempt_count(int val);
-前章(kernel/sched.c)を見てください。
(略)
#else
-プリエンプションのデバッグが無効かつ、
あるいはプリエンプションの追跡が無効の場合
# define add_preempt_count(val) do { preempt_count() += ...
-プリエンプションカウントに指定された値を加算する。
--[[linux-2.6.33/preempt_count()]]
(略)
#endif
*コメント [#wf76b0f3]
終了行:
*参照元 [#q276e33b]
#backlinks
*説明 [#xe7b8e44]
-パス: 複数あり
--プリエンプションのデバッグが有効: [[linux-2.6.33/kernel...
--プリエンプションのデバッグが無効: [[linux-2.6.33/includ...
-プリエンプションカウントに指定された値を加算する。
**引数 [#u9047e01]
-int val
--プリエンプションカウントに加算する値。
**返り値 [#hedb6c2f]
-なし
**参考 [#i688edaa]
*実装 [#meee966e]
**プリエンプションのデバッグが有効: kernel/sched.c [#zb5f...
-プリエンプションのデバッグが有効の場合、こちらが実行される
void __kprobes add_preempt_count(int val)
{
-kprobes の対象
--[[linux-2.6.33/__kprobes]]
#ifdef CONFIG_DEBUG_PREEMPT
-プリエンプションのデバッグが有効の場合
--[[linux-2.6.33/CONFIG_DEBUG_PREEMPT]]
/*
* Underflow?
*/
if (DEBUG_LOCKS_WARN_ON((preempt_count() < 0)))
return;
-プリエンプションカウントがアンダーフローしていたら警告す...
--[[linux-2.6.33/DEBUG_LOCKS_WARN_ON()]]
--[[linux-2.6.33/preempt_count()]]
#endif
preempt_count() += val;
-プリエンプションカウントに指定された値を加算する。
--[[linux-2.6.33/preempt_count()]]
#ifdef CONFIG_DEBUG_PREEMPT
/*
* Spinlock count overflowing soon?
*/
DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >=
PREEMPT_MASK - 10);
-プリエンプションカウントがオーバーフローしそうなときに警...
(preemption_disable() をネストさせすぎているときなど)
--[[linux-2.6.33/PREEMPT_MASK]]
#endif
if (preempt_count() == val)
trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_A...
-プリエンプションが有効から無効になったとき、
トレースポイントとして記録しておく。
--プリエンプションカウントが 0(有効) -> val(無効)、
という変化をしたとき、条件が真になる。
--[[linux-2.6.33/trace_preempt_off()]]
--[[linux-2.6.33/CALLER_ADDR0]]
--[[linux-2.6.33/get_parent_ip()]]
--[[linux-2.6.33/CALLER_ADDR1]]
}
EXPORT_SYMBOL(add_preempt_count);
-特にライセンスを区別せずシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL()]]
**プリエンプションのデバッグが無効: include/linux/preempt...
#if defined(CONFIG_DEBUG_PREEMPT) || defined(CONFIG_PREE...
-プリエンプションのデバッグが有効、
あるいはプリエンプションの追跡が有効の場合
--[[linux-2.6.33/CONFIG_DEBUG_PREEMPT]]
--[[linux-2.6.33/CONFIG_PREEMPT_TRACER]]
extern void add_preempt_count(int val);
-前章(kernel/sched.c)を見てください。
(略)
#else
-プリエンプションのデバッグが無効かつ、
あるいはプリエンプションの追跡が無効の場合
# define add_preempt_count(val) do { preempt_count() += ...
-プリエンプションカウントに指定された値を加算する。
--[[linux-2.6.33/preempt_count()]]
(略)
#endif
*コメント [#wf76b0f3]
ページ名: