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:
Xiang W 2021-09-16 12:32:49 +08:00 committed by Anup Patel
parent 3477f08b08
commit 12753d2256
1 changed files with 20 additions and 0 deletions

View File

@ -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