Patrick Georgi has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/33181 )
Change subject: console: Allow using vprintk() with disabled console ......................................................................
console: Allow using vprintk() with disabled console
The prototype of vprintk() is currently declared unconditionally, which prevents it from being used in situations where the console is disabled. The code will compile correctly, but not link, since the definition in console.c isn't being provided. This adds a shim around the declaration so that, like printk(), a call to vprintk() in this situation will expand to a no-op function instead.
Change-Id: Ib4a9aa96a5b9dbb9b937ff45854bf6a407938b37 Signed-off-by: Jacob Garber jgarber1@ualberta.ca Reviewed-on: https://review.coreboot.org/c/coreboot/+/33181 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Martin Roth martinroth@google.com Reviewed-by: Angel Pons th3fanbus@gmail.com --- M src/console/printk.c M src/include/console/console.h 2 files changed, 7 insertions(+), 6 deletions(-)
Approvals: build bot (Jenkins): Verified Martin Roth: Looks good to me, approved Angel Pons: Looks good to me, approved
diff --git a/src/console/printk.c b/src/console/printk.c index 0952215..8606bbb 100644 --- a/src/console/printk.c +++ b/src/console/printk.c @@ -45,7 +45,7 @@ __cbmemc_tx_byte(byte); }
-int vprintk(int msg_level, const char *fmt, va_list args) +int do_vprintk(int msg_level, const char *fmt, va_list args) { int i, log_this;
@@ -91,7 +91,7 @@ int i;
va_start(args, fmt); - i = vprintk(msg_level, fmt, args); + i = do_vprintk(msg_level, fmt, args); va_end(args);
return i; diff --git a/src/include/console/console.h b/src/include/console/console.h index 369ce5b..e5b753e 100644 --- a/src/include/console/console.h +++ b/src/include/console/console.h @@ -63,8 +63,8 @@ int console_log_level(int msg_level); void do_putchar(unsigned char byte);
-#define printk(LEVEL, fmt, args...) \ - do { do_printk(LEVEL, fmt, ##args); } while (0) +#define printk(LEVEL, fmt, args...) do_printk(LEVEL, fmt, ##args) +#define vprintk(LEVEL, fmt, args) do_vprintk(LEVEL, fmt, args)
enum { CONSOLE_LOG_NONE = 0, CONSOLE_LOG_FAST, CONSOLE_LOG_ALL };
@@ -84,14 +84,15 @@ static inline void console_init(void) {} static inline int console_log_level(int msg_level) { return 0; } static inline void printk(int LEVEL, const char *fmt, ...) {} +static inline void vprintk(int LEVEL, const char *fmt, va_list args) {} static inline void do_putchar(unsigned char byte) {} #endif
-int vprintk(int msg_level, const char *fmt, va_list args); - int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+int do_vprintk(int msg_level, const char *fmt, va_list args); + #endif /* !__ROMCC__ */
#endif /* CONSOLE_CONSOLE_H_ */