[PATCH V2 1/2] lib: sbi: add some macros to detect BUG at runtime

杜东 dd_nirvana at sjtu.edu.cn
Wed Sep 15 05:39:39 PDT 2021



----- Original Message -----
> From: "Xiang W" <wxjstz at 126.com>
> To: "opensbi" <opensbi at lists.infradead.org>
> Cc: "atish patra" <atish.patra at wdc.com>, "anup patel" <anup.patel at wdc.com>, "Xiang W" <wxjstz at 126.com>
> Sent: Wednesday, September 15, 2021 5:03:29 PM
> Subject: [PATCH V2 1/2] lib: sbi: add some macros to detect BUG at runtime

> Two macros are mainly added. One is called BUG(), which is used to put
> in unreachable branches. One named BUG_ON, used for assertion.
> 
> Signed-off-by: Xiang W <wxjstz at 126.com>
> ---
> include/sbi/sbi_console.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
> 
> diff --git a/include/sbi/sbi_console.h b/include/sbi/sbi_console.h
> index e24ba5f..e75a279 100644
> --- a/include/sbi/sbi_console.h
> +++ b/include/sbi/sbi_console.h
> @@ -11,6 +11,7 @@
> #define __SBI_CONSOLE_H__
> 
> #include <sbi/sbi_types.h>
> +#include <sbi/riscv_asm.h>
> 
> struct sbi_console_device {
> 	/** Name of the console device */
> @@ -51,4 +52,16 @@ 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__); \
> +	while (1)	\
> +		wfi();	\
> +	__builtin_unreachable(); \
> +} while (0)
> +
> +#define BUG_ON(cond) do { \
> +	if (!(cond))	\
> +		BUG(); \
> +} while (0)
> +

If the BUG_ON has a similar semantics as BUG_ON in Linux, it should be:
  + if (cond)	\
  +		BUG(); \

> #endif
> --
> 2.30.2
> 
> 
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi

Regards,
Dong



More information about the opensbi mailing list