bug.h 1.1 KB

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