It is possible to simply read the 'version_string' variable, but it seems better to add a proper API call to get this. It is already defined in lib/ulib/ulib.c Add a prototype to u-boot-lib.h Make use of it from the demo program. Fix the comment for ulib_uninit() while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
68 lines
1.4 KiB
C
68 lines
1.4 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Demo program showing U-Boot library functionality
|
|
*
|
|
* This demonstrates using U-Boot library functions in sandbox like os_*
|
|
* from external programs.
|
|
*
|
|
* Copyright 2025 Canonical Ltd.
|
|
* Written by Simon Glass <simon.glass@canonical.com>
|
|
*/
|
|
|
|
#include <inttypes.h>
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include <os.h>
|
|
#include <u-boot-lib.h>
|
|
#include <version_string.h>
|
|
#include "demo_helper.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int fd, result, lines = 0;
|
|
char line[256];
|
|
|
|
/* Init U-Boot library */
|
|
if (ulib_init(argv[0]) < 0) {
|
|
fprintf(stderr, "Failed to initialize U-Boot library\n");
|
|
return 1;
|
|
}
|
|
|
|
demo_show_banner();
|
|
printf("U-Boot version: %s\n", ulib_get_version());
|
|
printf("\n");
|
|
|
|
/* Use U-Boot's os_open to open a file */
|
|
fd = os_open("/proc/version", 0);
|
|
if (fd < 0) {
|
|
fprintf(stderr, "Failed to open /proc/version\n");
|
|
ulib_uninit();
|
|
return 1;
|
|
}
|
|
|
|
printf("System version:\n");
|
|
|
|
/* Use U-Boot's os_fgets to read lines */
|
|
while (os_fgets(line, sizeof(line), fd)) {
|
|
printf(" %s", line);
|
|
lines++;
|
|
}
|
|
|
|
os_close(fd);
|
|
|
|
printf("\nRead %d line(s) using U-Boot library functions.\n", lines);
|
|
|
|
/* Test the helper function */
|
|
result = demo_add_numbers(42, 13);
|
|
printf("Helper function result: %d\n", result);
|
|
|
|
demo_show_footer();
|
|
|
|
/* Clean up */
|
|
ulib_uninit();
|
|
|
|
return 0;
|
|
}
|