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 |
