aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2021-01-08 14:42:02 +0200
committerPetri Savolainen <petri.savolainen@nokia.com>2021-01-12 09:41:21 +0200
commit7288bcfb401bb3aff61120208249e5a041da189a (patch)
tree6f7de16287c510aa9b4996a7abc93450361078f7 /example
parente4843f933bd561edb8ee54697fd10f64e6d027b6 (diff)
example: timer_accuracy: protect start time samples
Use full memory barriers to forbid compiler and CPU to move time samples apart. This improves accuracy of time to tick conversions. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-by: Jere Leppänen <jere.leppanen@nokia.com>
Diffstat (limited to 'example')
-rw-r--r--example/timer/odp_timer_accuracy.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/example/timer/odp_timer_accuracy.c b/example/timer/odp_timer_accuracy.c
index 458e6b63f..cd790a181 100644
--- a/example/timer/odp_timer_accuracy.c
+++ b/example/timer/odp_timer_accuracy.c
@@ -405,10 +405,15 @@ static int start_timers(test_global_t *test_global)
}
idx = 0;
+
+ /* Record test start time and tick. Memory barriers forbid compiler and out-of-order
+ * CPU to move samples apart. */
+ odp_mb_full();
start_tick = odp_timer_current_tick(timer_pool);
time = odp_time_local();
- start_ns = odp_time_to_ns(time);
+ odp_mb_full();
+ start_ns = odp_time_to_ns(time);
test_global->start_tick = start_tick;
test_global->start_ns = start_ns;
test_global->period_tick = odp_timer_ns_to_tick(timer_pool, period_ns);