lib: sbi: add some macros to detect BUG at runtime
Three macros are added. One is called BUG, which is used to put in an unreachable branch. One is called BUG_ON, which is used to check bugs and assert conditions are opposite. One is called SBI_ASSERT, used for assertion checking. Signed-off-by: Xiang W <wxjstz@126.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
parent
3477f08b08
commit
12753d2256
|
@ -11,6 +11,7 @@
|
|||
#define __SBI_CONSOLE_H__
|
||||
|
||||
#include <sbi/sbi_types.h>
|
||||
#include <sbi/sbi_hart.h>
|
||||
|
||||
struct sbi_console_device {
|
||||
/** Name of the console device */
|
||||
|
@ -51,4 +52,23 @@ struct sbi_scratch;
|
|||
|
||||
int sbi_console_init(struct sbi_scratch *scratch);
|
||||
|
||||
#define BUG() do { \
|
||||
sbi_printf("BUG: failure at %s:%d/%s()!\n", \
|
||||
__FILE__, __LINE__, __func__); \
|
||||
sbi_hart_hang(); \
|
||||
} while (0)
|
||||
|
||||
#define BUG_ON(cond) do { \
|
||||
if (cond) \
|
||||
BUG(); \
|
||||
} while (0)
|
||||
|
||||
#define SBI_ASSERT(cond) do { \
|
||||
if (!(cond)) { \
|
||||
sbi_printf("ASSERT: %s:%d/%s(): Assertion `%s` failed.\n", \
|
||||
__FILE__,__LINE__,__func__, #cond);\
|
||||
sbi_hart_hang(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue