Add the concept of a "console usage", such as "standard output" or "debug messages". Allow usages to be associated with each console independently. For example, to send debugging output via the serial port, while preventing it from appearing on the local console: #define CONSOLE_SERIAL CONSOLE_USAGE_ALL #define CONSOLE_PCBIOS ( CONSOLE_USAGE_ALL & ~CONSOLE_USAGE_DEBUG ) If no usages are explicitly specified, then a default set of usages will be applied. For example: #define CONSOLE_SERIAL will have the same affect as #define CONSOLE_SERIAL CONSOLE_USAGE_ALL Signed-off-by: Michael Brown <mcb30@ipxe.org>
40 lines
903 B
C
40 lines
903 B
C
#include <ipxe/init.h>
|
|
#include <ipxe/serial.h>
|
|
#include <ipxe/console.h>
|
|
#include <config/console.h>
|
|
|
|
/** @file
|
|
*
|
|
* Serial console
|
|
*
|
|
*/
|
|
|
|
/* Set default console usage if applicable */
|
|
#if ! ( defined ( CONSOLE_SERIAL ) && CONSOLE_EXPLICIT ( CONSOLE_SERIAL ) )
|
|
#undef CONSOLE_SERIAL
|
|
#define CONSOLE_SERIAL CONSOLE_USAGE_ALL
|
|
#endif
|
|
|
|
struct console_driver serial_console __console_driver;
|
|
|
|
static void serial_console_init ( void ) {
|
|
/* Serial driver initialization should already be done,
|
|
* time to enable the serial console. */
|
|
serial_console.disabled = 0;
|
|
}
|
|
|
|
struct console_driver serial_console __console_driver = {
|
|
.putchar = serial_putc,
|
|
.getchar = serial_getc,
|
|
.iskey = serial_ischar,
|
|
.disabled = 1,
|
|
.usage = CONSOLE_SERIAL,
|
|
};
|
|
|
|
/**
|
|
* Serial console initialisation function
|
|
*/
|
|
struct init_fn serial_console_init_fn __init_fn ( INIT_CONSOLE ) = {
|
|
.initialise = serial_console_init,
|
|
};
|