Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
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 /* _TOOLS_ASM_BUG_H */ |
47 |
Warning: This file is not a C or C++ file. It does not have highlighting.