1
2 #ifndef _TOOLS_ASM_BUG_H
3 #define _TOOLS_ASM_BUG_H
4
5 #include <linux/compiler.h>
6 #include <stdio.h>
7
8 #define __WARN_printf(arg...) do { fprintf(stderr, arg); } while (0)
9
10 #define WARN(condition, format...) ({ \
11 int __ret_warn_on = !!(condition); \
12 if (unlikely(__ret_warn_on)) \
13 __WARN_printf(format); \
14 unlikely(__ret_warn_on); \
15 })
16
17 #define WARN_ON(condition) ({ \
18 int __ret_warn_on = !!(condition); \
19 if (unlikely(__ret_warn_on)) \
20 __WARN_printf("assertion failed at %s:%d\n", \
21 __FILE__, __LINE__); \
22 unlikely(__ret_warn_on); \
23 })
24
25 #define WARN_ON_ONCE(condition) ({ \
26 static int __warned; \
27 int __ret_warn_once = !!(condition); \
28 \
29 if (unlikely(__ret_warn_once && !__warned)) { \
30 __warned = true; \
31 WARN_ON(1); \
32 } \
33 unlikely(__ret_warn_once); \
34 })
35
36 #define WARN_ONCE(condition, format...) ({ \
37 static int __warned; \
38 int __ret_warn_once = !!(condition); \
39 \
40 if (unlikely(__ret_warn_once)) \
41 if (WARN(!__warned, format)) \
42 __warned = 1; \
43 unlikely(__ret_warn_once); \
44 })
45
46 #endif