1 #ifndef _ASM_GENERIC_BUG_H
2 #define _ASM_GENERIC_BUG_H
4 #include <linux/compiler.h>
8 #ifdef CONFIG_GENERIC_BUG
11 unsigned long bug_addr;
12 #ifdef CONFIG_DEBUG_BUGVERBOSE
18 #endif /* __ASSEMBLY__ */
20 #define BUGFLAG_WARNING (1<<0)
21 #endif /* CONFIG_GENERIC_BUG */
25 printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
30 #ifndef HAVE_ARCH_BUG_ON
31 #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
36 extern void warn_slowpath(const char *file, const int line,
37 const char *fmt, ...) __attribute__((format(printf, 3, 4)));
38 #define WANT_WARN_ON_SLOWPATH
40 #define __WARN() warn_slowpath(__FILE__, __LINE__, NULL)
41 #define __WARN_printf(arg...) warn_slowpath(__FILE__, __LINE__, arg)
43 #define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0)
47 #define WARN_ON(condition) ({ \
48 int __ret_warn_on = !!(condition); \
49 if (unlikely(__ret_warn_on)) \
51 unlikely(__ret_warn_on); \
56 #define WARN(condition, format...) ({ \
57 int __ret_warn_on = !!(condition); \
58 if (unlikely(__ret_warn_on)) \
59 __WARN_printf(format); \
60 unlikely(__ret_warn_on); \
64 #else /* !CONFIG_BUG */
69 #ifndef HAVE_ARCH_BUG_ON
70 #define BUG_ON(condition) do { if (condition) ; } while(0)
73 #ifndef HAVE_ARCH_WARN_ON
74 #define WARN_ON(condition) ({ \
75 int __ret_warn_on = !!(condition); \
76 unlikely(__ret_warn_on); \
81 #define WARN(condition, format...) ({ \
82 int __ret_warn_on = !!(condition); \
83 unlikely(__ret_warn_on); \
89 #define WARN_ON_ONCE(condition) ({ \
90 static int __warned; \
91 int __ret_warn_once = !!(condition); \
93 if (unlikely(__ret_warn_once)) \
94 if (WARN_ON(!__warned)) \
96 unlikely(__ret_warn_once); \
99 #define WARN_ONCE(condition, format...) ({ \
100 static int __warned; \
101 int __ret_warn_once = !!(condition); \
103 if (unlikely(__ret_warn_once)) \
104 if (WARN(!__warned, format)) \
106 unlikely(__ret_warn_once); \
109 #define WARN_ON_RATELIMIT(condition, state) \
110 WARN_ON((condition) && __ratelimit(state))
113 # define WARN_ON_SMP(x) WARN_ON(x)
115 # define WARN_ON_SMP(x) do { } while (0)