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