Re: [PATCH 1/2] bootsource: add bootsource instance index variable

"Sascha Hauer" <[email protected]>
Newsgroups org.infradead.lists.barebox
Message-ID <[email protected]>
On 2026-05-20 10:32, Fabian Pfitzner wrote:
> The bootsource instance index variable shows us,
> from which image on the instance we have booted from.
> This is a useful information, when there a multiple boot images contained
> on one flash (e. g. primary and recovery).
> 
> Add a C interface to set and get the bootsource instance:
> 
>     int bootsource_get_instance_index(void);
>     void bootsource_set_instance_index(int index);
> 
> Also export the shell variable "bootsource_instance_index".
> 
> Signed-off-by: Fabian Pfitzner <[email protected]>
> ---
>  Documentation/user/variables.rst |  1 +
>  common/bootsource.c              | 20 ++++++++++++++++++++
>  include/bootsource.h             | 11 +++++++++++
>  3 files changed, 32 insertions(+)
> 
> diff --git a/Documentation/user/variables.rst b/Documentation/user/variables.rst
> index 61808f1d72de29477b02b53ad11ecf530b4ebc80..c8b34679068cff4356fec306942b85561187652f 100644
> --- a/Documentation/user/variables.rst
> +++ b/Documentation/user/variables.rst
> @@ -112,6 +112,7 @@ of all active variables with special meaning along with a short description:
>    bootargs                         Linux Kernel parameters
>    bootsource                       The source barebox has been booted from
>    bootsource_instance              The instance of the source barebox has been booted from
> +  bootsource_instance_index        Tells us whether we have booted from primary(0) or secondary(1)
>    global.boot.default              default boot order
>    ...
>  
> diff --git a/common/bootsource.c b/common/bootsource.c
> index f608019bb758f820eea19213c75b389df6b4158c..53549d4171ff33bfcdd7436261cd8f4d3598099a 100644
> --- a/common/bootsource.c
> +++ b/common/bootsource.c
> @@ -33,6 +33,7 @@ static const char *bootsource_str[BOOTSOURCE_MAX] = {
>  
>  static enum bootsource bootsource = BOOTSOURCE_UNKNOWN;
>  static int bootsource_instance = BOOTSOURCE_INSTANCE_UNKNOWN;
> +static int bootsource_instance_index = BOOTSOURCE_INSTANCE_INDEX_UNKNOWN;
>  
>  const char *bootsource_to_string(enum bootsource src)
>  {
> @@ -226,6 +227,17 @@ int bootsource_set(enum bootsource src, int instance)
>  	return alias_id;
>  }
>  
> +void bootsource_set_instance_index(int index)
> +{
> +	if (index < 0 || index > 1)
> +		pr_err("Invalid index: %d, expected either 0 or 1", index);
> +
> +	char str[1];
> +
> +	sprintf(str, "%d", index);

The string is too small. You need another byte for the '\0'

Sascha

--
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.