sandbox: Add test function to advance time

Add a function that maintains an offset to include in the system timer
values returned from the lib/time.c APIs.

This will allow timeouts to be skipped instantly in tests

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
master
Joe Hershberger 9 years ago committed by Simon Glass
parent 905e8f9e53
commit 909bd6d972
  1. 5
      arch/sandbox/cpu/cpu.c
  2. 8
      arch/sandbox/include/asm/test.h
  3. 11
      board/sandbox/sandbox.c

@ -45,11 +45,6 @@ void __udelay(unsigned long usec)
os_usleep(usec);
}
unsigned long __attribute__((no_instrument_function)) timer_get_us(void)
{
return os_get_nsec() / 1000;
}
int cleanup_before_linux(void)
{
return 0;

@ -28,4 +28,12 @@ void sandbox_i2c_eeprom_set_test_mode(struct udevice *dev,
void sandbox_i2c_eeprom_set_offset_len(struct udevice *dev, int offset_len);
/*
* sandbox_timer_add_offset()
*
* Allow tests to add to the time reported through lib/time.c functions
* offset: number of milliseconds to advance the system time
*/
void sandbox_timer_add_offset(unsigned long offset);
#endif

@ -7,6 +7,7 @@
#include <cros_ec.h>
#include <dm.h>
#include <os.h>
#include <asm/test.h>
#include <asm/u-boot-sandbox.h>
/*
@ -25,9 +26,17 @@ void flush_cache(unsigned long start, unsigned long size)
{
}
/* system timer offset in ms */
static unsigned long sandbox_timer_offset;
void sandbox_timer_add_offset(unsigned long offset)
{
sandbox_timer_offset += offset;
}
unsigned long timer_read_counter(void)
{
return os_get_nsec() / 1000;
return os_get_nsec() / 1000 + sandbox_timer_offset * 1000;
}
int dram_init(void)

Loading…
Cancel
Save