- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#w870d165]
#backlinks
*注意 [#b58f9201]
-より新しいバージョンがあります。
--[[linux-2.6.33/BUG_ON()]]
*説明 [#y80720bb]
-パス: [[linux-2.6.25/include/asm-generic/bug.h]]
-指定した条件が成立したときに、バグ警告を表示させるマクロである。
**引数 [#j8b3733b]
-condition
--真理値として評価されうる式を指定する。
式の結果が真と評価されれば BUG() が実行される。
**返り値 [#z4a9c643]
-なし
**参考 [#s94f9480]
*実装 [#m0b933e3]
***CONFIG_BUG が定義されている場合 [#v0461832]
#ifdef CONFIG_BUG
(...略...)
#ifndef HAVE_ARCH_BUG_ON
-アーキテクチャ固有の BUG_ON がなければ共通の BUG_ON を使う。
--今のところ PowerPC と MIPS が独自の BUG_ON を定義している。
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
-条件 condition が成立していたらバグ警告する。
--[[linux-2.6.25/unlikely()]]
--[[linux-2.6.25/BUG()]]
#endif
(...略...)
***CONFIG_BUG が定義されていない場合 [#y01cc5da]
#else /* !CONFIG_BUG */
(...略...)
#ifndef HAVE_ARCH_BUG_ON
#define BUG_ON(condition) do { if (condition) ; } while(0)
-condition を一度評価する以外は何もしない。
--BUG_ON() を
#define BUG_ON(condition) do { } while(0)
としても良いように思えるが、condition に指定された式が副作用を持つ式
(例: i-- など)であると、CONFIG_BUG の有無で動作が変わってしまう。
このため condition 式の評価だけは行う。
(...略...)
#endif
*コメント [#p27db5f3]