Masahiro Yamada | 84b8bf6 | 2016-01-24 23:27:48 +0900 | [diff] [blame] | 1 | #ifndef _LINUX_BUG_H |
| 2 | #define _LINUX_BUG_H |
| 3 | |
Masahiro Yamada | 0a70fb4 | 2017-09-16 14:10:45 +0900 | [diff] [blame] | 4 | #include <vsprintf.h> /* for panic() */ |
Masahiro Yamada | 059a480 | 2017-09-16 14:10:44 +0900 | [diff] [blame] | 5 | #include <linux/build_bug.h> |
Masahiro Yamada | 0a70fb4 | 2017-09-16 14:10:45 +0900 | [diff] [blame] | 6 | #include <linux/compiler.h> |
| 7 | #include <linux/printk.h> |
| 8 | |
| 9 | #define BUG() do { \ |
| 10 | printk("BUG at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \ |
| 11 | panic("BUG!"); \ |
| 12 | } while (0) |
| 13 | |
| 14 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) |
| 15 | |
| 16 | #define WARN_ON(condition) ({ \ |
| 17 | int __ret_warn_on = !!(condition); \ |
| 18 | if (unlikely(__ret_warn_on)) \ |
| 19 | printk("WARNING at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \ |
| 20 | unlikely(__ret_warn_on); \ |
| 21 | }) |
| 22 | |
| 23 | #define WARN_ON_ONCE(condition) ({ \ |
| 24 | static bool __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 | }) |
Masahiro Yamada | 84b8bf6 | 2016-01-24 23:27:48 +0900 | [diff] [blame] | 33 | |
| 34 | #endif /* _LINUX_BUG_H */ |