summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Herburger <[email protected]>2026-04-13 17:24:54 +0200
committerTom Rini <[email protected]>2026-04-22 14:23:49 -0600
commite973fa5115e40f93bb1425db5b1cc1f3d9b8047d (patch)
treedd802fea63d671edf6ae2bcd28d4fab68e15defa
parent2c8fdd7aea1d3c6c380ea5b5080147dc7fe9c38f (diff)
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 <[email protected]> Reviewed-by: Simon Glass <[email protected]>
-rw-r--r--cmd/Kconfig8
-rw-r--r--common/cli.c4
2 files changed, 12 insertions, 0 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 9b8a13c3446..3fd791f3e4b 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -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
diff --git a/common/cli.c b/common/cli.c
index 4694a35cd0e..bcc7264d51a 100644
--- a/common/cli.c
+++ b/common/cli.c
@@ -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();