Tor 0.4.9.3-alpha-dev
Loading...
Searching...
No Matches
Data Structures | Macros | Functions
compat_time.h File Reference

Functions and types for monotonic times. More...

#include "orconfig.h"
#include "lib/cc/torint.h"
#include "lib/wallclock/tor_gettimeofday.h"

Go to the source code of this file.

Data Structures

struct  timeval
 
struct  monotime_t
 

Macros

#define MONOTIME_USING_GETTIMEOFDAY
 
#define monotime_coarse_t   monotime_t
 
#define monotime_coarse_get   monotime_get
 
#define monotime_coarse_absolute_nsec   monotime_absolute_nsec
 
#define monotime_coarse_absolute_usec   monotime_absolute_usec
 
#define monotime_coarse_absolute_msec   monotime_absolute_msec
 
#define monotime_coarse_absolute_sec   monotime_absolute_sec
 
#define monotime_coarse_diff_nsec   monotime_diff_nsec
 
#define monotime_coarse_diff_usec   monotime_diff_usec
 
#define monotime_coarse_diff_msec   monotime_diff_msec
 
#define monotime_coarse_zero   monotime_zero
 
#define monotime_coarse_is_zero   monotime_is_zero
 
#define monotime_coarse_add_msec   monotime_add_msec
 
#define USING_32BIT_MSEC_HACK
 

Functions

void monotime_init (void)
 
void monotime_get (monotime_t *out)
 
int64_t monotime_diff_nsec (const monotime_t *start, const monotime_t *end)
 
int64_t monotime_diff_usec (const monotime_t *start, const monotime_t *end)
 
int64_t monotime_diff_msec (const monotime_t *start, const monotime_t *end)
 
uint64_t monotime_absolute_nsec (void)
 
uint64_t monotime_absolute_usec (void)
 
uint64_t monotime_absolute_msec (void)
 
uint64_t monotime_absolute_sec (void)
 
void monotime_zero (monotime_t *out)
 
int monotime_is_zero (const monotime_t *out)
 
void monotime_add_msec (monotime_t *out, const monotime_t *val, uint32_t msec)
 
uint32_t monotime_coarse_to_stamp (const monotime_coarse_t *t)
 
uint64_t monotime_coarse_stamp_units_to_approx_msec (uint64_t units)
 
uint64_t monotime_msec_to_approx_coarse_stamp_units (uint64_t msec)
 
uint32_t monotime_coarse_get_stamp (void)
 
int32_t monotime_coarse_diff_msec32_ (const monotime_coarse_t *start, const monotime_coarse_t *end)
 
static int32_t monotime_coarse_diff_msec32 (const monotime_coarse_t *start, const monotime_coarse_t *end)
 
void tor_sleep_msec (int msec)
 

Detailed Description

Functions and types for monotonic times.

monotime_* functions try to provide a high-resolution monotonic timer with something the best resolution the system provides. monotime_coarse_* functions run faster (if the operating system gives us a way to do that) but produce a less accurate timer: accuracy will probably be on the order of tens of milliseconds.

Definition in file compat_time.h.

Macro Definition Documentation

◆ monotime_coarse_absolute_msec

#define monotime_coarse_absolute_msec   monotime_absolute_msec

Definition at line 279 of file compat_time.h.

◆ monotime_coarse_absolute_nsec

#define monotime_coarse_absolute_nsec   monotime_absolute_nsec

Definition at line 277 of file compat_time.h.

◆ monotime_coarse_absolute_sec

#define monotime_coarse_absolute_sec   monotime_absolute_sec

Definition at line 280 of file compat_time.h.

◆ monotime_coarse_absolute_usec

#define monotime_coarse_absolute_usec   monotime_absolute_usec

Definition at line 278 of file compat_time.h.

◆ monotime_coarse_add_msec

#define monotime_coarse_add_msec   monotime_add_msec

Definition at line 327 of file compat_time.h.

◆ monotime_coarse_diff_msec

#define monotime_coarse_diff_msec   monotime_diff_msec

Definition at line 324 of file compat_time.h.

◆ monotime_coarse_diff_nsec

#define monotime_coarse_diff_nsec   monotime_diff_nsec

Definition at line 322 of file compat_time.h.

◆ monotime_coarse_diff_usec

#define monotime_coarse_diff_usec   monotime_diff_usec

Definition at line 323 of file compat_time.h.

◆ monotime_coarse_get

#define monotime_coarse_get   monotime_get

Definition at line 276 of file compat_time.h.

◆ monotime_coarse_is_zero

#define monotime_coarse_is_zero   monotime_is_zero

Definition at line 326 of file compat_time.h.

◆ monotime_coarse_t

#define monotime_coarse_t   monotime_t

Definition at line 197 of file compat_time.h.

◆ monotime_coarse_zero

#define monotime_coarse_zero   monotime_zero

Definition at line 325 of file compat_time.h.

◆ MONOTIME_USING_GETTIMEOFDAY

#define MONOTIME_USING_GETTIMEOFDAY

Definition at line 176 of file compat_time.h.

Function Documentation

◆ monotime_absolute_msec()

uint64_t monotime_absolute_msec ( void  )

Return the number of milliseconds since the timer system was initialized. The returned value may be equal to zero. Fractional units are truncated, not rounded.

Definition at line 811 of file compat_time.c.

◆ monotime_absolute_nsec()

uint64_t monotime_absolute_nsec ( void  )

Return the number of nanoseconds since the timer system was initialized. The returned value may be equal to zero.

Definition at line 793 of file compat_time.c.

Referenced by monotime_absolute_msec(), monotime_absolute_sec(), and monotime_absolute_usec().

◆ monotime_absolute_sec()

uint64_t monotime_absolute_sec ( void  )

Return the number of seconds since the timer system was initialized. The returned value may be equal to zero. Fractional units are truncated, not rounded.

Definition at line 817 of file compat_time.c.

◆ monotime_absolute_usec()

uint64_t monotime_absolute_usec ( void  )

◆ monotime_add_msec()

void monotime_add_msec ( monotime_t out,
const monotime_t val,
uint32_t  msec 
)

Set out to N milliseconds after val.

◆ monotime_coarse_diff_msec32()

static int32_t monotime_coarse_diff_msec32 ( const monotime_coarse_t *  start,
const monotime_coarse_t *  end 
)
inlinestatic

As monotime_coarse_diff_msec, but avoid 64-bit division if it is expensive.

Requires that the difference fit into an int32_t; not for use with large time differences.

The returned value may be equal to zero. Fractional units are truncated, not rounded.

Definition at line 352 of file compat_time.h.

Referenced by cell_ewma_get_current_tick_and_fraction(), cell_ewma_get_tick(), and update_current_time().

◆ monotime_coarse_diff_msec32_()

int32_t monotime_coarse_diff_msec32_ ( const monotime_coarse_t *  start,
const monotime_coarse_t *  end 
)

As monotime_coarse_diff_msec, but avoid 64-bit division.

Requires that the difference fit into an int32_t; not for use with large time differences.

The returned value may be equal to zero. Fractional units are truncated, not rounded.

Referenced by monotime_coarse_diff_msec32().

◆ monotime_coarse_get_stamp()

uint32_t monotime_coarse_get_stamp ( void  )

◆ monotime_coarse_stamp_units_to_approx_msec()

uint64_t monotime_coarse_stamp_units_to_approx_msec ( uint64_t  units)

Convert a difference, expressed in the units of monotime_coarse_to_stamp, into an approximate number of milliseconds.

The returned value may be equal to zero. Fractional units are truncated, not rounded.

Definition at line 891 of file compat_time.c.

Referenced by channel_flush_from_first_active_circuit(), and rate_per_sec_to_rate_per_step().

◆ monotime_coarse_to_stamp()

uint32_t monotime_coarse_to_stamp ( const monotime_coarse_t *  t)

Return a "timestamp" approximation for a coarse monotonic timer. This timestamp is meant to be fast to calculate and easy to compare, and have a unit of something roughly around 1 msec.

It will wrap over from time to time.

It has no defined zero point.

Referenced by monotime_coarse_get_stamp().

◆ monotime_diff_msec()

int64_t monotime_diff_msec ( const monotime_t start,
const monotime_t end 
)

Return the number of milliseconds between start and end. The returned value may be equal to zero. Fractional units are truncated, not rounded.

Definition at line 785 of file compat_time.c.

◆ monotime_diff_nsec()

int64_t monotime_diff_nsec ( const monotime_t start,
const monotime_t end 
)

Return the number of nanoseconds between start and end. The returned value may be equal to zero.

Referenced by monotime_absolute_nsec(), monotime_diff_msec(), and monotime_diff_usec().

◆ monotime_diff_usec()

int64_t monotime_diff_usec ( const monotime_t start,
const monotime_t end 
)

Return the number of microseconds between start and end. The returned value may be equal to zero. Fractional units are truncated, not rounded.

Definition at line 777 of file compat_time.c.

Referenced by hs_pow_solve(), and timer_advance_to_cur_time().

◆ monotime_get()

void monotime_get ( monotime_t out)

◆ monotime_init()

void monotime_init ( void  )

Initialize the timing subsystem. This function is idempotent.

Initialize the monotonic timer subsystem. Must be called before any monotonic timer functions. This function is idempotent.

Definition at line 751 of file compat_time.c.

Referenced by monotime_absolute_nsec(), and timers_initialize().

◆ monotime_is_zero()

int monotime_is_zero ( const monotime_t out)

Return true iff out is zero

◆ monotime_msec_to_approx_coarse_stamp_units()

uint64_t monotime_msec_to_approx_coarse_stamp_units ( uint64_t  msec)

Definition at line 896 of file compat_time.c.

◆ monotime_zero()

void monotime_zero ( monotime_t out)

Set out to zero.

Definition at line 764 of file compat_time.c.

◆ tor_sleep_msec()

void tor_sleep_msec ( int  msec)

Delay for msec milliseconds.

Definition at line 58 of file compat_time.c.

Referenced by worker_thread_main().