1#ifndef _ASM_GENERIC_BUG_H 2#define _ASM_GENERIC_BUG_H 3 4#include <linux/compiler.h> 5 6#ifdef CONFIG_BUG 7#ifndef HAVE_ARCH_BUG 8#define BUG() do { \ 9 printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \ 10 panic("BUG!"); \ 11} while (0) 12#endif 13 14#ifndef HAVE_ARCH_BUG_ON 15#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) 16#endif 17 18#ifndef HAVE_ARCH_WARN_ON 19#define WARN_ON(condition) do { \ 20 if (unlikely((condition)!=0)) { \ 21 printk("BUG: warning at %s:%d/%s()\n", __FILE__, __LINE__, __FUNCTION__); \ 22 dump_stack(); \ 23 } \ 24} while (0) 25#endif 26 27#else /* !CONFIG_BUG */ 28#ifndef HAVE_ARCH_BUG 29#define BUG() 30#endif 31 32#ifndef HAVE_ARCH_BUG_ON 33#define BUG_ON(condition) do { if (condition) ; } while(0) 34#endif 35 36#ifndef HAVE_ARCH_WARN_ON 37#define WARN_ON(condition) do { if (condition) ; } while(0) 38#endif 39#endif 40 41#define WARN_ON_ONCE(condition) \ 42({ \ 43 static int __warn_once = 1; \ 44 int __ret = 0; \ 45 \ 46 if (unlikely((condition) && __warn_once)) { \ 47 __warn_once = 0; \ 48 WARN_ON(1); \ 49 __ret = 1; \ 50 } \ 51 __ret; \ 52}) 53 54#ifdef CONFIG_SMP 55# define WARN_ON_SMP(x) WARN_ON(x) 56#else 57# define WARN_ON_SMP(x) do { } while (0) 58#endif 59 60#endif 61