*参照元 [#w870d165]
#backlinks

*説明 [#y80720bb]
-パス: [[linux-2.6.33/include/asm-generic/bug.h]]

-指定した条件が成立したときに、バグ警告を表示させるマクロである。


**引数 [#j8b3733b]
-condition
--真理値として評価されうる式を指定する。
式の結果が真と評価されれば BUG() が実行される。

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

**参考 [#s94f9480]

-独自の BUG_ON を定義しているアーキテクチャ
 $ grep -r HAVE_ARCH_BUG_ON .
 ./arch/mips/include/asm/bug.h:#define HAVE_ARCH_BUG_ON
 ./arch/powerpc/include/asm/bug.h:#define HAVE_ARCH_BUG_ON


*実装 [#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.33/unlikely()]]
--[[linux-2.6.33/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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS