- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#v74e2b41]
#backlinks
*説明 [#z24fbecd]
-パス: 複数あり
--プリエンプションのデバッグが有効: [[linux-2.6.33/kernel/sched.c]]
--プリエンプションのデバッグが無効: [[linux-2.6.33/include/linux/preempt.h]]
-FIXME: これは何?
--説明
**引数 [#u9047e01]
-なし
**返り値 [#hedb6c2f]
-なし
**参考 [#i688edaa]
*実装 [#w1ae4717]
**kernel/sched.c [#zb5f8206]
-プリエンプションのデバッグが有効の場合、こちらが実行される
void __kprobes sub_preempt_count(int val)
{
#ifdef CONFIG_DEBUG_PREEMPT
/*
* Underflow?
*/
if (DEBUG_LOCKS_WARN_ON(val > preempt_count()))
return;
/*
* Is the spinlock portion underflowing?
*/
if (DEBUG_LOCKS_WARN_ON((val < PREEMPT_MASK) &&
!(preempt_count() & PREEMPT_MASK)))
return;
#endif
if (preempt_count() == val)
trace_preempt_on(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
preempt_count() -= val;
}
EXPORT_SYMBOL(sub_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 sub_preempt_count(int val);
-kernel/sched.c の実装を見てください。
(略)
#else
-プリエンプションのデバッグが無効かつ、
あるいはプリエンプションの追跡が無効の場合
# define sub_preempt_count(val) do { preempt_count() -= (val); } while (0)
-
--[[linux-2.6.33/preempt_count()]]
(略)
#endif
*コメント [#h975707a]