diff options
author | Matias Elo <matias.elo@nokia.com> | 2023-06-28 13:20:11 +0300 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2023-08-08 09:54:40 +0300 |
commit | 0d3b1032759f8c7820549ce5b24841b2f4b3c53e (patch) | |
tree | 61bf645e2aa20c0102368b58987da4ceb0f83b26 /platform/linux-dpdk | |
parent | 7130826774c0092fcdfd5e53aeba63cabaf62964 (diff) |
Port 3ea19c8cb "linux-gen: timer: implement odp_timer_sample_ticks()"
Port original commit from linux-generic.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Tuomas Taipale <tuomas.taipale@nokia.com>
Diffstat (limited to 'platform/linux-dpdk')
-rw-r--r-- | platform/linux-dpdk/odp_timer.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/platform/linux-dpdk/odp_timer.c b/platform/linux-dpdk/odp_timer.c index 9104bb30d..4056018ae 100644 --- a/platform/linux-dpdk/odp_timer.c +++ b/platform/linux-dpdk/odp_timer.c @@ -807,6 +807,35 @@ uint64_t odp_timer_current_tick(odp_timer_pool_t tp) return rte_get_timer_cycles(); } +int odp_timer_sample_ticks(odp_timer_pool_t tp[], uint64_t tick[], uint64_t clk_count[], int num) +{ + uint64_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(tp[i] == ODP_TIMER_POOL_INVALID)) { + _ODP_ERR("Invalid timer pool\n"); + return -1; + } + } + + now = rte_get_timer_cycles(); + + for (i = 0; i < num; i++) { + tick[i] = now; + + if (clk_count) + clk_count[i] = 0; + } + + return 0; +} + int odp_timer_pool_info(odp_timer_pool_t tp, odp_timer_pool_info_t *info) { |