diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2020-12-30 18:07:48 +0100 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2021-01-30 14:25:42 -0700 |
commit | 43db07507abdb54b6575345300c171b0486e46be (patch) | |
tree | 7c6ba06d302c3cc443b6f7cf73bd8ff7b4ea69f7 /arch/sandbox | |
parent | 5e6c9029cdeae72eeeb4e05caa4ce3d48e2e86fb (diff) | |
download | u-boot-43db07507abdb54b6575345300c171b0486e46be.tar.gz u-boot-43db07507abdb54b6575345300c171b0486e46be.tar.xz u-boot-43db07507abdb54b6575345300c171b0486e46be.zip |
sandbox: keep time offset when resetting
The UEFI Self Certification Test (SCT) checks the SetTime() service with
the following steps:
* set date
* reset
* check date matches
To be compliant the sandbox should keep the offset to the host RTC during
resets. The implementation uses the environment variable
UBOOT_SB_TIME_OFFSET to persist the offset.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/sandbox')
-rw-r--r-- | arch/sandbox/cpu/os.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c index 80996a91ce..3d8af0a52b 100644 --- a/arch/sandbox/cpu/os.c +++ b/arch/sandbox/cpu/os.c @@ -32,6 +32,9 @@ #include <os.h> #include <rtc_def.h> +/* Environment variable for time offset */ +#define ENV_TIME_OFFSET "UBOOT_SB_TIME_OFFSET" + /* Operating System Interface */ struct os_mem_hdr { @@ -798,6 +801,28 @@ int os_spl_to_uboot(const char *fname) return os_jump_to_file(fname); } +long os_get_time_offset(void) +{ + const char *offset; + + offset = getenv(ENV_TIME_OFFSET); + if (offset) + return strtol(offset, NULL, 0); + return 0; +} + +void os_set_time_offset(long offset) +{ + char buf[21]; + int ret; + + snprintf(buf, sizeof(buf), "%ld", offset); + ret = setenv(ENV_TIME_OFFSET, buf, true); + if (ret) + printf("Could not set environment variable %s\n", + ENV_TIME_OFFSET); +} + void os_localtime(struct rtc_time *rt) { time_t t = time(NULL); |