NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
tsc.h
Go to the documentation of this file.
1#ifndef NDNDPDK_DPDK_TSC_H
2#define NDNDPDK_DPDK_TSC_H
3
5
6#include "../core/common.h"
7
9typedef uint64_t TscTime;
10
12typedef int64_t TscDuration;
13
14#ifndef __BPF__
15
17extern uint64_t TscHz;
18
20extern double TscGHz;
21
23extern double TscSeconds;
24
26extern double TscNanos;
27
28extern double TscTimeRefUnixNano_;
29extern double TscTimeRefTsc_;
30
31static __rte_always_inline TscTime
32TscTime_FromUnixNano(uint64_t n) {
33 double unixNanoSinceRef = n - TscTimeRefUnixNano_;
34 double tscSinceRef = unixNanoSinceRef * TscGHz;
35 return TscTimeRefTsc_ + tscSinceRef;
36}
37
38static __rte_always_inline uint64_t
39TscTime_ToUnixNano(TscTime t) {
40 double tscSinceRef = t - TscTimeRefTsc_;
41 double unixNanoSinceRef = tscSinceRef * TscNanos;
42 return TscTimeRefUnixNano_ + unixNanoSinceRef;
43}
44
46static __rte_always_inline TscDuration
47TscDuration_FromMillis(int64_t millis) {
48 return millis * TscHz / 1000;
49}
50
52static __rte_always_inline int64_t
53TscDuration_ToMillis(TscDuration d) {
54 return d * 1000 / TscHz;
55}
56
57#endif // __BPF__
58
59#endif // NDNDPDK_DPDK_TSC_H
double TscNanos
Nanoseconds in one TSC time unit, 1/TscGHz .
Definition tsc.c:6
uint64_t TscHz
TSC time units in one second.
Definition tsc.c:3
double TscTimeRefTsc_
Definition tsc.c:8
double TscGHz
TSC time units in one nanosecond, TscHz/1e9 .
Definition tsc.c:4
double TscTimeRefUnixNano_
Definition tsc.c:7
double TscSeconds
Seconds in one TSC time unit, 1/TscHz .
Definition tsc.c:5
int64_t TscDuration
Duration in TscTime unit.
Definition tsc.h:12
uint64_t TscTime
TSC clock time point.
Definition tsc.h:9