diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2023-05-02 14:17:24 +0300 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2023-06-08 15:05:09 +0300 |
commit | 3ea19c8cb5c756ba5c5a7ffbf66af6776f5d0d80 (patch) | |
tree | 828c1c57cb4274a3e0867fd37d31bb94a652b67f | |
parent | 03edba4a0eb83865d9b5ea47f83056307f91ec03 (diff) |
linux-gen: timer: implement odp_timer_sample_ticks()
Implemented the new timer pool tick sample function.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
-rw-r--r-- | platform/linux-generic/odp_timer.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 24490763c..8219c59a2 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -1453,6 +1453,39 @@ uint64_t odp_timer_current_tick(odp_timer_pool_t tpid) return current_nsec(tp); } +int odp_timer_sample_ticks(odp_timer_pool_t timer_pool[], uint64_t tick[], uint64_t clk_count[], + int num) +{ + timer_pool_t *tp[MAX_TIMER_POOLS]; + odp_time_t now; + int i; + + if (num <= 0 || num > MAX_TIMER_POOLS) { + _ODP_ERR("Bad number of timer pools: %i\n", num); + return -1; + } + + for (i = 0; i < num; i++) { + if (odp_unlikely(timer_pool[i] == ODP_TIMER_POOL_INVALID)) { + _ODP_ERR("Invalid timer pool\n"); + return -1; + } + + tp[i] = timer_pool_from_hdl(timer_pool[i]); + } + + now = odp_time_global(); + + for (i = 0; i < num; i++) { + tick[i] = time_nsec(tp[i], now); + + if (clk_count) + clk_count[i] = tick[i]; + } + + return 0; +} + int odp_timer_pool_info(odp_timer_pool_t tpid, odp_timer_pool_info_t *tp_info) { timer_pool_t *tp; |