[PATCH 14/18] console: Print out complete stdio device list

Heinrich Schuchardt xypron.glpk at gmx.de
Sun Jul 23 08:38:17 CEST 2023


On 7/23/23 06:40, Bin Meng wrote:
> At present if both CONSOLE_MUX and SYS_CONSOLE_IS_IN_ENV are on,
> during boot, the printed out stdio devices are incomplete, e.g.:
> with "stdout=serial,vidconsole", only "vidconsole" is printed.
>
> For such case, we can print out the stdio device name from the
> environment variables.
>
> Signed-off-by: Bin Meng <bmeng at tinylab.org>
> ---
>
>   common/console.c | 30 +++++++++++++++++++++---------
>   1 file changed, 21 insertions(+), 9 deletions(-)
>
> diff --git a/common/console.c b/common/console.c
> index af52897ec3..98c3ee6ca6 100644
> --- a/common/console.c
> +++ b/common/console.c
> @@ -1014,15 +1014,27 @@ static void stdio_print_current_devices(void)
>   {
>   	char *stdinname, *stdoutname, *stderrname;
>
> -	stdinname = stdio_devices[stdin] ?
> -		    stdio_devices[stdin]->name :
> -		    "No input devices available!";
> -	stdoutname = stdio_devices[stdout] ?
> -		     stdio_devices[stdout]->name :
> -		     "No output devices available!";
> -	stderrname = stdio_devices[stderr] ?
> -		     stdio_devices[stderr]->name :
> -		     "No error devices available!";
> +	if (CONFIG_IS_ENABLED(CONSOLE_MUX) &&
> +	    CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV)) {
> +		/* stdin stdout and stderr are in environment */
> +		stdinname  = env_get("stdin");
> +		stdoutname = env_get("stdout");
> +		stderrname = env_get("stderr");
> +
> +		stdinname = stdinname ? : "No input devices available!";
> +		stdoutname = stdoutname ? : "No output devices available!";

This string will never be printed as you have no output device.

> +		stderrname = stderrname ? : "No error devices available!";
> +	} else {
> +		stdinname = stdio_devices[stdin] ?
> +			stdio_devices[stdin]->name :
> +			"No input devices available!";
> +		stdoutname = stdio_devices[stdout] ?
> +			stdio_devices[stdout]->name :
> +			"No output devices available!";

ditto

> +		stderrname = stdio_devices[stderr] ?
> +			stdio_devices[stderr]->name :
> +			"No error devices available!";
> +	}

do_coninfo() shows how to print all muxed devices irrespective of
SYS_CONSOLE_IS_IN_ENV.

Best regards

Heinrich

>
>   	/* Print information */
>   	puts("In:    ");



More information about the U-Boot mailing list