diff options
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.h | 55 |
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)) |