*参照元 [#cce305f9] #backlinks *説明 [#pd9831e5] -パス: [[linux-2.6.33/include/asm-generic/bug.h]] x86 版: [[linux-2.6.33/BUG()(x86)]] --x86 版: [[linux-2.6.33/BUG()(x86)]] -バグ警告を出してカーネルを停止(パニック)させる。 **引数 [#na0af98b] -なし **返り値 [#j5fc4ae9] -なし **参考 [#d68682db] -独自の BUG() を実装しているアーキテクチャ $ grep -r HAVE_ARCH_BUG . | grep define | grep -v BUG_ON ./arch/alpha/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/arm/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/avr32/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/blackfin/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/cris/include/arch-v10/arch/bug.h:#define HAVE_ARCH_BUG ./arch/cris/include/arch-v32/arch/bug.h:#define HAVE_ARCH_BUG ./arch/frv/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/ia64/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/m68k/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/mips/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/mn10300/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/parisc/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/powerpc/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/s390/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/sh/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/sparc/include/asm/bug.h:#define HAVE_ARCH_BUG ./arch/x86/include/asm/bug.h:#define HAVE_ARCH_BUG *実装 [#e7675614] ***CONFIG_BUG が未定義の場合 [#pc0c4952] #ifdef CONFIG_BUG (...略...) #ifndef HAVE_ARCH_BUG -アーキテクチャ固有の BUG() がなければ共通の BUG() を使う。 --ほぼ全てのアーキテクチャが独自の BUG() を定義している。 #define BUG() do { \ printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__ ); \ panic("BUG!"); \ } while (0) -バグ警告(バグの発生したソースファイル、行番号、関数名)を表示して、 カーネルパニックさせる。 --[[linux-2.6.33/printk()]] --[[linux-2.6.33/panic()]] #endif (...略...) ***CONFIG_BUG が未定義の場合 [#f656daf4] #else /* !CONFIG_BUG */ #ifndef HAVE_ARCH_BUG #define BUG() -何もしない #endif (...略...) #endif *コメント [#q589800b]