diff options
author | Matias Elo <matias.elo@nokia.com> | 2024-01-05 13:46:23 +0200 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2024-01-29 12:59:26 +0200 |
commit | 70c22bcfd0d2644826a8128147d8a5ce5d5d213e (patch) | |
tree | 5b5cd73281786366d6c73131136a1434a9f54d1a /platform/linux-dpdk/include/odp/api | |
parent | d99921f8eb9dc1fd1af4bee6c9fe67657b3737de (diff) |
linux-dpdk: timer: inline odp_timer_tick_to_ns() implementation
Inline implementation of odp_timer_tick_to_ns() function.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Tuomas Taipale <tuomas.taipale@nokia.com>
Diffstat (limited to 'platform/linux-dpdk/include/odp/api')
-rw-r--r-- | platform/linux-dpdk/include/odp/api/plat/timer_inline_types.h | 8 | ||||
-rw-r--r-- | platform/linux-dpdk/include/odp/api/plat/timer_inlines.h | 18 |
2 files changed, 26 insertions, 0 deletions
diff --git a/platform/linux-dpdk/include/odp/api/plat/timer_inline_types.h b/platform/linux-dpdk/include/odp/api/plat/timer_inline_types.h index 330cbe4ce..6c997e80d 100644 --- a/platform/linux-dpdk/include/odp/api/plat/timer_inline_types.h +++ b/platform/linux-dpdk/include/odp/api/plat/timer_inline_types.h @@ -31,6 +31,14 @@ typedef struct _odp_timeout_inline_offset_t { extern const _odp_timeout_inline_offset_t _odp_timeout_inline_offset; +/* Timer global data */ +typedef struct _odp_timer_global_t { + uint64_t freq_hz; + +} _odp_timer_global_t; + +extern _odp_timer_global_t _odp_timer_glob; + /** @endcond */ #ifdef __cplusplus diff --git a/platform/linux-dpdk/include/odp/api/plat/timer_inlines.h b/platform/linux-dpdk/include/odp/api/plat/timer_inlines.h index d9403bb0e..217dce54d 100644 --- a/platform/linux-dpdk/include/odp/api/plat/timer_inlines.h +++ b/platform/linux-dpdk/include/odp/api/plat/timer_inlines.h @@ -9,6 +9,7 @@ #include <odp/api/event.h> #include <odp/api/hints.h> +#include <odp/api/time_types.h> #include <odp/api/timer_types.h> #include <odp/api/plat/debug_inlines.h> @@ -32,6 +33,7 @@ #define odp_timeout_from_event __odp_timeout_from_event #define odp_timeout_from_event_multi __odp_timeout_from_event_multi #define odp_timeout_to_event __odp_timeout_to_event + #define odp_timer_tick_to_ns __odp_timer_tick_to_ns #else #define _ODP_INLINE #endif @@ -82,6 +84,22 @@ _ODP_INLINE odp_event_t odp_timeout_to_event(odp_timeout_t tmo) return (odp_event_t)tmo; } +_ODP_INLINE uint64_t odp_timer_tick_to_ns(odp_timer_pool_t tp ODP_UNUSED, uint64_t ticks) +{ + uint64_t nsec; + uint64_t sec = 0; + const uint64_t freq_hz = _odp_timer_glob.freq_hz; + + if (ticks >= freq_hz) { + sec = ticks / freq_hz; + ticks = ticks - sec * freq_hz; + } + + nsec = (ODP_TIME_SEC_IN_NS * ticks) / freq_hz; + + return (sec * ODP_TIME_SEC_IN_NS) + nsec; +} + /** @endcond */ #endif |