diff options
author | Simon Glass <sjg@chromium.org> | 2015-11-08 23:47:48 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-11-19 20:27:50 -0700 |
commit | 9854a8748c8fdd69784a1fa1c4758c696621c88d (patch) | |
tree | df09215e384695c184221ab9e3f4a295ef15efeb /include | |
parent | b7b65090b29e6bc133c7922f8290c1e2f75b064a (diff) | |
download | u-boot-9854a8748c8fdd69784a1fa1c4758c696621c88d.tar.gz |
console: Add a console buffer
It is useful to be able to record console output and provide console input
via a buffer. This provides sandbox with the ability to run a command and
check its output. If the console is set to silent then no visible output
is generated.
This also provides a means to fix the problem where tests produce unwanted
output, such as errors or warnings. This can be confusing. We can instead
set the console to silent and record this output. It can be checked later
in the test if required.
It is possible that this may prove useful for non-test situations. For
example the console output may be suppressed for normal operations, but
recorded and stored for access by the OS. That feature is not implemented
at present.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/global_data.h | 6 | ||||
-rw-r--r-- | include/console.h | 22 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index d0383f3d76..1abdcaa6b7 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -21,6 +21,7 @@ */ #ifndef __ASSEMBLY__ +#include <membuff.h> #include <linux/list.h> typedef struct global_data { @@ -103,6 +104,10 @@ typedef struct global_data { #endif struct udevice *cur_serial_dev; /* current serial device */ struct arch_global_data arch; /* architecture-specific data */ +#ifdef CONFIG_CONSOLE_RECORD + struct membuff console_out; /* console output */ + struct membuff console_in; /* console input */ +#endif } gd_t; #endif @@ -121,5 +126,6 @@ typedef struct global_data { #define GD_FLG_FULL_MALLOC_INIT 0x00200 /* Full malloc() is ready */ #define GD_FLG_SPL_INIT 0x00400 /* spl_init() has been called */ #define GD_FLG_SKIP_RELOC 0x00800 /* Don't relocate */ +#define GD_FLG_RECORD 0x01000 /* Record console */ #endif /* __ASM_GENERIC_GBL_DATA_H */ diff --git a/include/console.h b/include/console.h index 097518d150..3d37f6a53b 100644 --- a/include/console.h +++ b/include/console.h @@ -20,6 +20,28 @@ void clear_ctrlc(void); /* clear the Control-C condition */ int disable_ctrlc(int); /* 1 to disable, 0 to enable Control-C detect */ int confirm_yesno(void); /* 1 if input is "y", "Y", "yes" or "YES" */ +/** + * console_record_init() - set up the console recording buffers + * + * This should be called as soon as malloc() is available so that the maximum + * amount of console output can be recorded. + */ +int console_record_init(void); + +/** + * console_record_reset() - reset the console recording buffers + * + * Removes any data in the buffers + */ +void console_record_reset(void); + +/** + * console_record_reset_enable() - reset and enable the console buffers + * + * This should be called to enable the console buffer. + */ +void console_record_reset_enable(void); + /* * CONSOLE multiplexing. */ |