2#ifndef CLICK_TSCTIMESTAMP_HH
3#define CLICK_TSCTIMESTAMP_HH
4#include <click/glue.hh>
11 typedef uninitialized_type uninitialized_t;
12 typedef int64_t cycles_t;
18 explicit TSCTimestamp(cycles_t v) {
22 static inline click_cycles_t cycles_hz_warp() {
24 if (Timestamp::warp_class() == Timestamp::warp_simulation) {
32 inline TSCTimestamp(
const uninitialized_t &unused) {
36 static inline TSCTimestamp now() {
38 if (Timestamp::warp_class() == Timestamp::warp_simulation) {
42 return TSCTimestamp(click_get_cycles());
45 static inline TSCTimestamp now_steady() {
49 friend inline bool operator>(
const TSCTimestamp &a,
const TSCTimestamp &b);
50 friend inline bool operator<(
const TSCTimestamp &a,
const TSCTimestamp &b);
51 friend inline bool operator>=(
const TSCTimestamp &a,
const TSCTimestamp &b);
52 friend inline bool operator<=(
const TSCTimestamp &a,
const TSCTimestamp &b);
53 friend inline bool operator==(
const TSCTimestamp &a,
const TSCTimestamp &b);
54 friend inline bool operator!=(
const TSCTimestamp &a,
const TSCTimestamp &b);
55 friend inline TSCTimestamp operator+(
const TSCTimestamp &a,
const TSCTimestamp &b);
56 friend inline TSCTimestamp operator-(
const TSCTimestamp &a,
const TSCTimestamp &b);
59 inline String unparse()
const {
60 double t = (double)(val) / (double)cycles_hz_warp();
68 inline int64_t msecval() {
69 return val / (cycles_hz_warp() / 1000);
75 inline int64_t usecval() {
76 return val / (cycles_hz_warp() / 1000000);
82 inline double nsecval() {
83 return (
double)val / ((double)cycles_hz_warp() / 1000000000.0f);
86 inline int64_t tsc_val() {
90 static inline TSCTimestamp make_msec(
unsigned n) {
91 return TSCTimestamp((n * cycles_hz_warp()) / 1000);
94 static inline TSCTimestamp make_usec(
unsigned n) {
95 return TSCTimestamp((n * cycles_hz_warp()) / 1000000);
112operator!=(
const TSCTimestamp &a,
const TSCTimestamp &b)
114 return a.val != b.val;
123operator==(
const TSCTimestamp &a,
const TSCTimestamp &b)
125 return a.val == b.val;
128inline bool operator<(
const TSCTimestamp &a,
const TSCTimestamp &b) {
129 return a.val < b.val;
132inline bool operator<=(
const TSCTimestamp &a,
const TSCTimestamp &b) {
133 return a.val <= b.val;
136inline bool operator>(
const TSCTimestamp &a,
const TSCTimestamp &b) {
137 return a.val > b.val;
140inline bool operator>=(
const TSCTimestamp &a,
const TSCTimestamp &b) {
141 return a.val >= b.val;
145inline TSCTimestamp operator+(
const TSCTimestamp &a,
const TSCTimestamp &b) {
146 return TSCTimestamp(a.val + b.val);
149inline TSCTimestamp operator-(
const TSCTimestamp &a,
const TSCTimestamp &b) {
150 return TSCTimestamp(a.val - b.val);
A string of characters.
Definition string.hh:22
Represents a moment or interval in time.
Definition timestamp.hh:125
static Timestamp now_steady()
Return the current steady-clock time.
Definition timestamp.hh:986
static Timestamp make_nsec(seconds_type sec, uint32_t nsec)
Return a timestamp representing sec seconds plus nsec nanoseconds.
Definition timestamp.hh:366
The Timestamp class represents a moment or interval in time.