aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/include/odp/api/plat/time_inlines.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-dpdk/include/odp/api/plat/time_inlines.h')
-rw-r--r--platform/linux-dpdk/include/odp/api/plat/time_inlines.h55
1 files changed, 50 insertions, 5 deletions
diff --git a/platform/linux-dpdk/include/odp/api/plat/time_inlines.h b/platform/linux-dpdk/include/odp/api/plat/time_inlines.h
index 5032b0fcb..c007c5ce9 100644
--- a/platform/linux-dpdk/include/odp/api/plat/time_inlines.h
+++ b/platform/linux-dpdk/include/odp/api/plat/time_inlines.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2018, Linaro Limited
- * Copyright (c) 2020, Nokia
+ * Copyright (c) 2020-2021, Nokia
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
@@ -21,11 +21,13 @@
#define _ODP_TIME_GIGA_HZ 1000000000ULL
typedef odp_time_t (*time_cur_fn)(void);
+typedef odp_time_t (*time_cur_strict_fn)(void);
typedef uint64_t (*time_res_fn)(void);
typedef struct time_handler_ {
- time_cur_fn time_cur;
- time_res_fn time_res;
+ time_cur_fn time_cur;
+ time_cur_strict_fn time_cur_strict;
+ time_res_fn time_res;
} time_handler_t;
@@ -58,11 +60,28 @@ static inline odp_time_t _odp_time_cur_gen(void)
return _odp_timespec_cur();
}
+static inline odp_time_t _odp_time_cur_gen_strict(void)
+{
+ if (_odp_time_glob.use_hw) {
+ odp_time_t time;
+
+ time.count = _odp_cpu_global_time_strict() - _odp_time_glob.hw_start;
+ return time;
+ }
+
+ return _odp_timespec_cur();
+}
+
static inline odp_time_t _odp_time_cur(void)
{
return _odp_time_glob.handler.time_cur();
}
+static inline odp_time_t _odp_time_cur_strict(void)
+{
+ return _odp_time_glob.handler.time_cur_strict();
+}
+
static inline uint64_t _odp_time_hw_to_ns(odp_time_t time)
{
uint64_t nsec;
@@ -96,6 +115,12 @@ static inline uint64_t _odp_time_convert_to_ns(odp_time_t time)
#define odp_time_to_ns __odp_time_to_ns
#define odp_time_local_ns __odp_time_local_ns
#define odp_time_global_ns __odp_time_global_ns
+
+ #define odp_time_local_strict __odp_time_local_strict
+ #define odp_time_global_strict __odp_time_global_strict
+ #define odp_time_local_strict_ns __odp_time_local_strict_ns
+ #define odp_time_global_strict_ns __odp_time_global_strict_ns
+
#define odp_time_cmp __odp_time_cmp
#define odp_time_diff __odp_time_diff
#define odp_time_sum __odp_time_sum
@@ -114,9 +139,14 @@ _ODP_INLINE odp_time_t odp_time_global(void)
return _odp_time_cur();
}
-_ODP_INLINE uint64_t odp_time_to_ns(odp_time_t time)
+_ODP_INLINE odp_time_t odp_time_local_strict(void)
{
- return _odp_time_convert_to_ns(time);
+ return _odp_time_cur_strict();
+}
+
+_ODP_INLINE odp_time_t odp_time_global_strict(void)
+{
+ return _odp_time_cur_strict();
}
_ODP_INLINE uint64_t odp_time_local_ns(void)
@@ -129,6 +159,21 @@ _ODP_INLINE uint64_t odp_time_global_ns(void)
return _odp_time_convert_to_ns(_odp_time_cur());
}
+_ODP_INLINE uint64_t odp_time_local_strict_ns(void)
+{
+ return _odp_time_convert_to_ns(_odp_time_cur_strict());
+}
+
+_ODP_INLINE uint64_t odp_time_global_strict_ns(void)
+{
+ return _odp_time_convert_to_ns(_odp_time_cur_strict());
+}
+
+_ODP_INLINE uint64_t odp_time_to_ns(odp_time_t time)
+{
+ return _odp_time_convert_to_ns(time);
+}
+
_ODP_INLINE int odp_time_cmp(odp_time_t t2, odp_time_t t1)
{
if (odp_likely(t2.u64 > t1.u64))