1 /*
2  * Copyright (C) 2015-2021 Alibaba Group Holding Limited
3  */
4 
5 #ifndef _BUG_H_
6 #define _BUG_H_
7 #include <stdio.h>
8 
9 #define BUG() do {} while(1)
10 #define panic(...) BUG_ON_MSG(1, ##__VA_ARGS__)
11 #define BUG_ON(condition) do { \
12     if (unlikely(condition)) { \
13         printf("BUG at %s:%d!\r\n", __func__, __LINE__); \
14 		BUG(); \
15 	} \
16 } while (0)
17 
18 #define BUG_ON_MSG(condition, fmt, ...) do { \
19 	if(condition) { \
20 		printf("BUG at %s:%d! "fmt"\r\n", __func__, __LINE__, ##__VA_ARGS__); \
21 	} \
22 } while (0)
23 
24 #define WARN_ON(condition) ({\
25 	int __ret = !!(condition); \
26 	if(__ret) { \
27 		printf("WARN at %s:%d!\r\n", __func__, __LINE__); \
28 	} \
29 	__ret;})
30 
31 
32 #define WARN_ON_ONCE(condition) ({\
33 	static int __ret = 0; \
34 	__ret = !!(condition); \
35 	if(__ret) { \
36 		printf("WARN at %s:%d!\r\n", __func__, __LINE__); \
37 	} \
38 	__ret;})
39 
40 #define WARN(condition, fmt, ...) ({\
41 	static int __ret = 0; \
42 	__ret = !!(condition); \
43 	if(__ret) { \
44 		printf("WARN at %s:%d "fmt"\r\n", __func__, __LINE__, ##__VA_ARGS__); \
45 	} \
46 	__ret;})
47 
48 #define WARN_ON_MSG(condition, fmt, ...) do { \
49 	if(condition) { \
50 		printf("WARN at %s:%d! "fmt"\r\n", __func__, __LINE__, ##__VA_ARGS__); \
51 	} \
52 } while (0)
53 
54 #define BUILD_BUG_ON(condition) BUG_ON(condition)
55 
56 #endif //_BUG_H_
57