Merge branch 'idr-4.11' of git://git.infradead.org/users/willy/linux-dax
[sfrench/cifs-2.6.git] / tools / include / asm / bug.h
1 #ifndef _TOOLS_ASM_BUG_H
2 #define _TOOLS_ASM_BUG_H
3
4 #include <linux/compiler.h>
5
6 #define __WARN_printf(arg...)   do { fprintf(stderr, arg); } while (0)
7
8 #define WARN(condition, format...) ({           \
9         int __ret_warn_on = !!(condition);      \
10         if (unlikely(__ret_warn_on))            \
11                 __WARN_printf(format);          \
12         unlikely(__ret_warn_on);                \
13 })
14
15 #define WARN_ON(condition) ({                                   \
16         int __ret_warn_on = !!(condition);                      \
17         if (unlikely(__ret_warn_on))                            \
18                 __WARN_printf("assertion failed at %s:%d\n",    \
19                                 __FILE__, __LINE__);            \
20         unlikely(__ret_warn_on);                                \
21 })
22
23 #define WARN_ON_ONCE(condition) ({                      \
24         static int __warned;                            \
25         int __ret_warn_once = !!(condition);            \
26                                                         \
27         if (unlikely(__ret_warn_once && !__warned)) {   \
28                 __warned = true;                        \
29                 WARN_ON(1);                             \
30         }                                               \
31         unlikely(__ret_warn_once);                      \
32 })
33
34 #define WARN_ONCE(condition, format...) ({      \
35         static int __warned;                    \
36         int __ret_warn_once = !!(condition);    \
37                                                 \
38         if (unlikely(__ret_warn_once))          \
39                 if (WARN(!__warned, format))    \
40                         __warned = 1;           \
41         unlikely(__ret_warn_once);              \
42 })
43
44 #endif /* _TOOLS_ASM_BUG_H */