summaryrefslogtreecommitdiff
path: root/core/host/timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/host/timer.c')
-rw-r--r--core/host/timer.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/core/host/timer.c b/core/host/timer.c
index ff17ddf068..124f17c14f 100644
--- a/core/host/timer.c
+++ b/core/host/timer.c
@@ -15,14 +15,25 @@
#include "util.h"
/*
- * For test that need to test for longer than 10 seconds, adjust
- * its time scale in test/build.mk by specifying
+ * For test that need to test for longer than the default time limit,
+ * adjust its time scale in test/build.mk by specifying
* <test_name>-scale=<new scale>.
*/
#ifndef TEST_TIME_SCALE
#define TEST_TIME_SCALE 1
#endif
+/*
+ * To increase the stability of timing sensitive unit tests, slow
+ * down the time by 10x. This only affects active run time (including
+ * udelay() calls). To an unit test, the only effect is increased code
+ * execution speed. However, this comes at the cost of prolonged test
+ * run time for tests that use udelay(). Fortunately, most of our tests
+ * use usleep/msleep, and for tests that use udelay(), we can scale
+ * the time as mentioned above.
+ */
+#define TEST_TIME_SLOW_DOWN 10
+
static timestamp_t boot_time;
static int time_set;
@@ -45,7 +56,7 @@ timestamp_t _get_time(void)
timestamp_t ret;
clock_gettime(CLOCK_MONOTONIC, &ts);
ret.val = (1000000000 * (uint64_t)ts.tv_sec + ts.tv_nsec) *
- TEST_TIME_SCALE / 1000;
+ TEST_TIME_SCALE / 1000 / TEST_TIME_SLOW_DOWN;
return ret;
}