0001
0002 #ifndef _TOOLS_ASM_BUG_H
0003 #define _TOOLS_ASM_BUG_H
0004
0005 #include <linux/compiler.h>
0006 #include <stdio.h>
0007
0008 #define __WARN_printf(arg...) do { fprintf(stderr, arg); } while (0)
0009
0010 #define WARN(condition, format...) ({ \
0011 int __ret_warn_on = !!(condition); \
0012 if (unlikely(__ret_warn_on)) \
0013 __WARN_printf(format); \
0014 unlikely(__ret_warn_on); \
0015 })
0016
0017 #define WARN_ON(condition) ({ \
0018 int __ret_warn_on = !!(condition); \
0019 if (unlikely(__ret_warn_on)) \
0020 __WARN_printf("assertion failed at %s:%d\n", \
0021 __FILE__, __LINE__); \
0022 unlikely(__ret_warn_on); \
0023 })
0024
0025 #define WARN_ON_ONCE(condition) ({ \
0026 static int __warned; \
0027 int __ret_warn_once = !!(condition); \
0028 \
0029 if (unlikely(__ret_warn_once && !__warned)) { \
0030 __warned = true; \
0031 WARN_ON(1); \
0032 } \
0033 unlikely(__ret_warn_once); \
0034 })
0035
0036 #define WARN_ONCE(condition, format...) ({ \
0037 static int __warned; \
0038 int __ret_warn_once = !!(condition); \
0039 \
0040 if (unlikely(__ret_warn_once)) \
0041 if (WARN(!__warned, format)) \
0042 __warned = 1; \
0043 unlikely(__ret_warn_once); \
0044 })
0045
0046 #endif