aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2023-05-02 14:17:24 +0300
committerPetri Savolainen <petri.savolainen@nokia.com>2023-06-08 15:05:09 +0300
commit3ea19c8cb5c756ba5c5a7ffbf66af6776f5d0d80 (patch)
tree828c1c57cb4274a3e0867fd37d31bb94a652b67f
parent03edba4a0eb83865d9b5ea47f83056307f91ec03 (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.c33
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;