diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2021-01-08 14:42:02 +0200 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2021-01-12 09:41:21 +0200 |
commit | 7288bcfb401bb3aff61120208249e5a041da189a (patch) | |
tree | 6f7de16287c510aa9b4996a7abc93450361078f7 /example | |
parent | e4843f933bd561edb8ee54697fd10f64e6d027b6 (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.c | 7 |
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); |