shell: add Kconfig option for configurable autoflush behavior

Introduced a new Kconfig option `SHELL_PRINTF_AUTOFLUSH` to allow
configuring the autoflush behavior of shell printing functions.

Updated `Z_SHELL_FPRINTF_DEFINE` to use the
`CONFIG_SHELL_PRINTF_AUTOFLUSH` setting instead of hardcoding
the autoflush behavior to `true`.

Signed-off-by: Jakub Rzeszutko <jakub.rzeszutko@verkada.com>
This commit is contained in:
Jakub Rzeszutko 2025-01-21 12:33:06 +01:00 committed by Benjamin Cabé
parent 492ad96ee5
commit 8991b954bc
2 changed files with 8 additions and 1 deletions

View file

@ -952,7 +952,7 @@ extern void z_shell_print_stream(const void *user_ctx, const char *data,
static struct shell_ctx UTIL_CAT(_name, _ctx); \ static struct shell_ctx UTIL_CAT(_name, _ctx); \
Z_SHELL_HISTORY_DEFINE(_name##_history, CONFIG_SHELL_HISTORY_BUFFER); \ Z_SHELL_HISTORY_DEFINE(_name##_history, CONFIG_SHELL_HISTORY_BUFFER); \
Z_SHELL_FPRINTF_DEFINE(_name##_fprintf, &_name, _out_buf, CONFIG_SHELL_PRINTF_BUFF_SIZE, \ Z_SHELL_FPRINTF_DEFINE(_name##_fprintf, &_name, _out_buf, CONFIG_SHELL_PRINTF_BUFF_SIZE, \
true, z_shell_print_stream); \ IS_ENABLED(CONFIG_SHELL_PRINTF_AUTOFLUSH), z_shell_print_stream); \
LOG_INSTANCE_REGISTER(shell, _name, CONFIG_SHELL_LOG_LEVEL); \ LOG_INSTANCE_REGISTER(shell, _name, CONFIG_SHELL_LOG_LEVEL); \
Z_SHELL_STATS_DEFINE(_name); \ Z_SHELL_STATS_DEFINE(_name); \
static K_KERNEL_STACK_DEFINE(_name##_stack, CONFIG_SHELL_STACK_SIZE); \ static K_KERNEL_STACK_DEFINE(_name##_stack, CONFIG_SHELL_STACK_SIZE); \

View file

@ -94,6 +94,13 @@ config SHELL_PRINTF_BUFF_SIZE
It is working like stdio buffering in Linux systems It is working like stdio buffering in Linux systems
to limit number of peripheral access calls. to limit number of peripheral access calls.
config SHELL_PRINTF_AUTOFLUSH
bool "Indicate if the buffer should be automatically flushed"
default y
help
Specify whether the shell's printing functions should automatically
flush the printf buffer.
config SHELL_DEFAULT_TERMINAL_WIDTH config SHELL_DEFAULT_TERMINAL_WIDTH
int "Default terminal width" int "Default terminal width"
range 1 $(UINT16_MAX) range 1 $(UINT16_MAX)