mtd: sf: Make sf_mtd.c more robust
[platform/kernel/u-boot.git] / include / linux / bug.h
1 #ifndef _LINUX_BUG_H
2 #define _LINUX_BUG_H
3
4 #include <vsprintf.h> /* for panic() */
5 #include <linux/build_bug.h>
6 #include <linux/compiler.h>
7 #include <linux/printk.h>
8
9 #define BUG() do { \
10         printk("BUG at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
11         panic("BUG!"); \
12 } while (0)
13
14 #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
15
16 #define WARN_ON(condition) ({                                           \
17         int __ret_warn_on = !!(condition);                              \
18         if (unlikely(__ret_warn_on))                                    \
19                 printk("WARNING at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
20         unlikely(__ret_warn_on);                                        \
21 })
22
23 #define WARN(condition, format...) ({                   \
24         int __ret_warn_on = !!(condition);              \
25         if (unlikely(__ret_warn_on))                    \
26                 printf(format);                  \
27         unlikely(__ret_warn_on);                    \
28 })
29
30 #define WARN_ON_ONCE(condition) ({                              \
31         static bool __warned;                                   \
32         int __ret_warn_once = !!(condition);                    \
33                                                                 \
34         if (unlikely(__ret_warn_once && !__warned)) {           \
35                 __warned = true;                                \
36                 WARN_ON(1);                                     \
37         }                                                       \
38         unlikely(__ret_warn_once);                              \
39 })
40
41 #define WARN_ONCE(condition, format...) ({          \
42         static bool __warned;     \
43         int __ret_warn_once = !!(condition);            \
44                                                                 \
45         if (unlikely(__ret_warn_once && !__warned)) {       \
46                 __warned = true;                \
47                 WARN(1, format);                \
48         }                           \
49         unlikely(__ret_warn_once);              \
50 })
51
52 #endif  /* _LINUX_BUG_H */