lib: Introduce sbi_dprintf() API
authorAnup Patel <anup.patel@wdc.com>
Thu, 8 Aug 2019 06:40:22 +0000 (12:10 +0530)
committerAnup Patel <anup@brainfault.org>
Fri, 9 Aug 2019 07:08:33 +0000 (12:38 +0530)
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>
include/sbi/sbi_console.h
include/sbi/sbi_scratch.h
lib/sbi/sbi_console.c

index 16021d0..45af22f 100644 (file)
@@ -31,6 +31,10 @@ int __printf(3, 4) sbi_snprintf(char *out, u32 out_sz, const char *format, ...);
 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
index 46ea38f..fd18bb2 100644 (file)
@@ -74,6 +74,8 @@ struct sbi_scratch {
 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 */
index 30fb2c8..03dcdb2 100644 (file)
@@ -375,6 +375,19 @@ int sbi_printf(const char *format, ...)
        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);