aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/include/odp/api
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2024-01-05 13:46:23 +0200
committerMatias Elo <matias.elo@nokia.com>2024-01-29 12:59:26 +0200
commit70c22bcfd0d2644826a8128147d8a5ce5d5d213e (patch)
tree5b5cd73281786366d6c73131136a1434a9f54d1a /platform/linux-dpdk/include/odp/api
parentd99921f8eb9dc1fd1af4bee6c9fe67657b3737de (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.h8
-rw-r--r--platform/linux-dpdk/include/odp/api/plat/timer_inlines.h18
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