console: Add loglevel prefix to interactive consoles
In an attempt to make loglevels more visible (and therefore useful, hopefully), this patch adds a prefix indicating the log level to every line sent to an "interactive" console (such as a UART). If the code contains a `printk(BIOS_DEBUG, "This is a debug message!\n"), it will now show up as [DEBUG] This is a debug message! on the UART output. "Stored" consoles (such as in CBMEM) will get a similar but more space-efficient feature in a later CL. Signed-off-by: Julius Werner <jwerner@chromium.org> Change-Id: Ic83413475400821f8097ef1819a293ee8926bb0b Reviewed-on: https://review.coreboot.org/c/coreboot/+/61306 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org>
This commit is contained in:
committed by
Felix Held
parent
1ee6e4ab6c
commit
7cd8ba6eda
@@ -67,9 +67,35 @@ union log_state {
|
||||
};
|
||||
};
|
||||
|
||||
static void wrap_interactive_printf(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vtxprintf(console_interactive_tx_byte, fmt, args, NULL);
|
||||
}
|
||||
|
||||
static void line_start(union log_state state)
|
||||
{
|
||||
if (state.level > BIOS_LOG_PREFIX_MAX_LEVEL)
|
||||
return;
|
||||
if (state.speed == CONSOLE_LOG_FAST)
|
||||
return;
|
||||
|
||||
/* Interactive consoles get a `[DEBUG] ` style readable prefix. */
|
||||
wrap_interactive_printf(BIOS_LOG_PREFIX_PATTERN, bios_log_prefix[state.level]);
|
||||
}
|
||||
|
||||
static void wrap_putchar(unsigned char byte, void *data)
|
||||
{
|
||||
union log_state state = { .as_ptr = data };
|
||||
static bool line_started = false;
|
||||
|
||||
if (byte == '\n') {
|
||||
line_started = false;
|
||||
} else if (!line_started) {
|
||||
line_start(state);
|
||||
line_started = true;
|
||||
}
|
||||
|
||||
if (state.speed == CONSOLE_LOG_FAST)
|
||||
__cbmemc_tx_byte(byte);
|
||||
|
||||
Reference in New Issue
Block a user