Loading...
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 */
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_ONCE(condition, format...) ({ \
16 static int __warned; \
17 int __ret_warn_once = !!(condition); \
18 \
19 if (unlikely(__ret_warn_once)) \
20 if (WARN(!__warned, format)) \
21 __warned = 1; \
22 unlikely(__ret_warn_once); \
23})
24
25#endif /* _TOOLS_ASM_BUG_H */