This patch introduces new sbi_dprintf() API for runtime debug
prints. The sbi_dprintf() will print to console for a given
HART only when SBI_SCRATCH_DEBUG_PRINTS option in enabled in
sbi_scratch for this HART.
We can now add debug prints using sbi_dprintf() at important
places in OpenSBI sources. These debug prints will only show
up when previous booting stage or compile time parameter sets
the SBI_SCRATCH_DEBUG_PRINTS option in scratch space.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
int __printf(1, 2) sbi_printf(const char *format, ...);
struct sbi_scratch;
+
+int __printf(2, 3) sbi_dprintf(struct sbi_scratch *scratch,
+ const char *format, ...);
+
int sbi_console_init(struct sbi_scratch *scratch);
#endif
enum sbi_scratch_options {
/** Disable prints during boot */
SBI_SCRATCH_NO_BOOT_PRINTS = (1 << 0),
+ /** Enable runtime debug prints */
+ SBI_SCRATCH_DEBUG_PRINTS = (1 << 1),
};
/** Get pointer to sbi_scratch for current HART */
return retval;
}
+int sbi_dprintf(struct sbi_scratch *scratch, const char *format, ...)
+{
+ va_list args;
+ int retval = 0;
+
+ va_start(args, format);
+ if (scratch->options & SBI_SCRATCH_DEBUG_PRINTS)
+ retval = print(NULL, NULL, format, args);
+ va_end(args);
+
+ return retval;
+}
+
int sbi_console_init(struct sbi_scratch *scratch)
{
console_plat = sbi_platform_ptr(scratch);