*参照元 [#q276e33b]
#backlinks

*説明 [#xe7b8e44]
-パス: [[linux-2.6.33/include/linux/preempt.h]]
-パス: 複数あり
--プリエンプションのデバッグが有効: [[linux-2.6.33/kernel/sched.c]]
--プリエンプションのデバッグが無効: [[linux-2.6.33/include/linux/preempt.h]]

-FIXME: これは何?
--説明


**引数 [#u9047e01]
-
--
-なし


**返り値 [#hedb6c2f]
-
--
-なし


**参考 [#i688edaa]


*実装 [#meee966e]
 #if defined(CONFIG_DEBUG_PREEMPT) || defined(CONFIG_PREEMPT_TRACER)
**kernel/sched.c [#zb5f8206]
-プリエンプションのデバッグが有効の場合、こちらが実行される

 void __kprobes add_preempt_count(int val)
 {
 #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;
 #ifdef CONFIG_DEBUG_PREEMPT
 	/*
 	 * Spinlock count overflowing soon?
 	 */
 	DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >=
 				PREEMPT_MASK - 10);
-
--[[linux-2.6.33/PREEMPT_MASK]]

 #endif
 	if (preempt_count() == val)
 		trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
-
--[[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.h [#g85c266b]
 #if defined(CONFIG_DEBUG_PREEMPT) || defined(CONFIG_PREEMPT_TRACER)
-プリエンプションのデバッグが有効、
あるいはプリエンプションの追跡が有効の場合
--[[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() += (val); } while (0)
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/preempt_count()]]

 # define add_preempt_count(val)	do { preempt_count() += (val); } while (0)
 
 (略)
 
 #endif
 

*コメント [#wf76b0f3]



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS