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 */ 45