cli: flush stdin before enabling cli

Currently there is no possibility to flush stdin after autocommands are
executed. If in the bootcmd the stdin is changed, e.g. from nulldev to
serial, it could happen that junk characters sit in the fifo and appear
on the cli.

Add a option to clear stdin before starting the CLI.

Signed-off-by: Gregor Herburger <gregor.herburger@linutronix.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Gregor Herburger 2026-04-13 17:24:54 +02:00 committed by Tom Rini
parent 2c8fdd7aea
commit e973fa5115
2 changed files with 12 additions and 0 deletions

View File

@ -47,6 +47,14 @@ config HUSH_SELECTABLE
default y if HUSH_OLD_PARSER && HUSH_MODERN_PARSER
endmenu
config CMDLINE_FLUSH_STDIN
bool "Enable flushing input before starting cli"
help
When this option is enabled the stdin buffer will be flushed before
starting the CLI. This is useful when stdin is changed during boot
(e.g. from nulldev to serial) and junk characters may be pending
in the buffer.
config CMDLINE_EDITING
bool "Enable command line editing"
default y

View File

@ -295,6 +295,10 @@ err:
void cli_loop(void)
{
bootstage_mark(BOOTSTAGE_ID_ENTER_CLI_LOOP);
if (IS_ENABLED(CONFIG_CMDLINE_FLUSH_STDIN))
console_flush_stdin();
#if CONFIG_IS_ENABLED(HUSH_PARSER)
if (gd->flags & GD_FLG_HUSH_MODERN_PARSER)
parse_and_run_file();