mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Add monotime functions for clearing monotonic times
We need this to replace some of our "msec" users with monotime users.
This commit is contained in:
parent
426110dfa2
commit
4c877ae874
@ -351,6 +351,12 @@ monotime_coarse_to_stamp(const monotime_coarse_t *t)
|
|||||||
return (uint32_t)(t->abstime_ >> monotime_shift);
|
return (uint32_t)(t->abstime_ >> monotime_shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
monotime_is_zero(const monotime_t *val)
|
||||||
|
{
|
||||||
|
return val->abstime_ == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* end of "__APPLE__" */
|
/* end of "__APPLE__" */
|
||||||
#elif defined(HAVE_CLOCK_GETTIME)
|
#elif defined(HAVE_CLOCK_GETTIME)
|
||||||
|
|
||||||
@ -441,6 +447,12 @@ monotime_coarse_to_stamp(const monotime_coarse_t *t)
|
|||||||
return (sec * STAMP_TICKS_PER_SECOND) + (nsec >> 20);
|
return (sec * STAMP_TICKS_PER_SECOND) + (nsec >> 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
monotime_is_zero(const monotime_t *val)
|
||||||
|
{
|
||||||
|
return val->ts_.tv_sec == 0 && val->ts_.tv_nsec == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* end of "HAVE_CLOCK_GETTIME" */
|
/* end of "HAVE_CLOCK_GETTIME" */
|
||||||
#elif defined (_WIN32)
|
#elif defined (_WIN32)
|
||||||
|
|
||||||
@ -581,6 +593,18 @@ monotime_coarse_to_stamp(const monotime_coarse_t *t)
|
|||||||
return (uint32_t) t->tick_count_;
|
return (uint32_t) t->tick_count_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
monotime_is_zero(const monotime_t *val)
|
||||||
|
{
|
||||||
|
return val->pcount_ == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
monotime_coarse_is_zero(const monotime_coarse_t *val)
|
||||||
|
{
|
||||||
|
return val->tick_count_ == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* end of "_WIN32" */
|
/* end of "_WIN32" */
|
||||||
#elif defined(MONOTIME_USING_GETTIMEOFDAY)
|
#elif defined(MONOTIME_USING_GETTIMEOFDAY)
|
||||||
|
|
||||||
@ -628,6 +652,12 @@ monotime_coarse_to_stamp(const monotime_coarse_t *t)
|
|||||||
return (sec * STAMP_TICKS_PER_SECOND) | (nsec >> 10);
|
return (sec * STAMP_TICKS_PER_SECOND) | (nsec >> 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
monotime_is_zero(const monotime_t *val)
|
||||||
|
{
|
||||||
|
return val->tv_.tv_sec == 0 && val->tv_.tv_usec == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* end of "MONOTIME_USING_GETTIMEOFDAY" */
|
/* end of "MONOTIME_USING_GETTIMEOFDAY" */
|
||||||
#else
|
#else
|
||||||
#error "No way to implement monotonic timers."
|
#error "No way to implement monotonic timers."
|
||||||
@ -650,6 +680,19 @@ monotime_init(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
monotime_zero(monotime_t *out)
|
||||||
|
{
|
||||||
|
memset(out, 0, sizeof(*out));
|
||||||
|
}
|
||||||
|
#ifdef MONOTIME_COARSE_TYPE_IS_DIFFERENT
|
||||||
|
void
|
||||||
|
monotime_coarse_zero(monotime_coarse_t *out)
|
||||||
|
{
|
||||||
|
memset(out, 0, sizeof(*out));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int64_t
|
int64_t
|
||||||
monotime_diff_usec(const monotime_t *start,
|
monotime_diff_usec(const monotime_t *start,
|
||||||
const monotime_t *end)
|
const monotime_t *end)
|
||||||
|
@ -105,6 +105,15 @@ uint64_t monotime_absolute_usec(void);
|
|||||||
*/
|
*/
|
||||||
uint64_t monotime_absolute_msec(void);
|
uint64_t monotime_absolute_msec(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set <b>out</b> to zero.
|
||||||
|
*/
|
||||||
|
void monotime_zero(monotime_t *out);
|
||||||
|
/**
|
||||||
|
* Return true iff <b>out</b> is zero
|
||||||
|
*/
|
||||||
|
int monotime_is_zero(const monotime_t *out);
|
||||||
|
|
||||||
#if defined(MONOTIME_COARSE_FN_IS_DIFFERENT)
|
#if defined(MONOTIME_COARSE_FN_IS_DIFFERENT)
|
||||||
/**
|
/**
|
||||||
* Set <b>out</b> to the current coarse time.
|
* Set <b>out</b> to the current coarse time.
|
||||||
@ -144,10 +153,14 @@ int64_t monotime_coarse_diff_usec(const monotime_coarse_t *start,
|
|||||||
const monotime_coarse_t *end);
|
const monotime_coarse_t *end);
|
||||||
int64_t monotime_coarse_diff_msec(const monotime_coarse_t *start,
|
int64_t monotime_coarse_diff_msec(const monotime_coarse_t *start,
|
||||||
const monotime_coarse_t *end);
|
const monotime_coarse_t *end);
|
||||||
|
void monotime_coarse_zero(monotime_coarse_t *out);
|
||||||
|
int monotime_coarse_is_zero(const monotime_coarse_t *val);
|
||||||
#else /* !(defined(MONOTIME_COARSE_TYPE_IS_DIFFERENT)) */
|
#else /* !(defined(MONOTIME_COARSE_TYPE_IS_DIFFERENT)) */
|
||||||
#define monotime_coarse_diff_nsec monotime_diff_nsec
|
#define monotime_coarse_diff_nsec monotime_diff_nsec
|
||||||
#define monotime_coarse_diff_usec monotime_diff_usec
|
#define monotime_coarse_diff_usec monotime_diff_usec
|
||||||
#define monotime_coarse_diff_msec monotime_diff_msec
|
#define monotime_coarse_diff_msec monotime_diff_msec
|
||||||
|
#define monotime_coarse_zero monotime_zero
|
||||||
|
#define monotime_coarse_is_zero monotime_is_zero
|
||||||
#endif /* defined(MONOTIME_COARSE_TYPE_IS_DIFFERENT) */
|
#endif /* defined(MONOTIME_COARSE_TYPE_IS_DIFFERENT) */
|
||||||
|
|
||||||
void tor_gettimeofday(struct timeval *timeval);
|
void tor_gettimeofday(struct timeval *timeval);
|
||||||
|
@ -5925,6 +5925,28 @@ test_util_monotonic_time_ratchet(void *arg)
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_util_monotonic_time_zero(void *arg)
|
||||||
|
{
|
||||||
|
(void) arg;
|
||||||
|
monotime_t t1;
|
||||||
|
monotime_coarse_t ct1;
|
||||||
|
monotime_init();
|
||||||
|
/* Check 1: The current time is not zero. */
|
||||||
|
monotime_get(&t1);
|
||||||
|
monotime_coarse_get(&ct1);
|
||||||
|
tt_assert(!monotime_is_zero(&t1));
|
||||||
|
tt_assert(!monotime_coarse_is_zero(&ct1));
|
||||||
|
|
||||||
|
/* Check 2: The _zero() makes the time zero. */
|
||||||
|
monotime_zero(&t1);
|
||||||
|
monotime_coarse_zero(&ct1);
|
||||||
|
tt_assert(monotime_is_zero(&t1));
|
||||||
|
tt_assert(monotime_coarse_is_zero(&ct1));
|
||||||
|
done:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_util_htonll(void *arg)
|
test_util_htonll(void *arg)
|
||||||
{
|
{
|
||||||
@ -6158,6 +6180,7 @@ struct testcase_t util_tests[] = {
|
|||||||
UTIL_TEST(calloc_check, 0),
|
UTIL_TEST(calloc_check, 0),
|
||||||
UTIL_TEST(monotonic_time, 0),
|
UTIL_TEST(monotonic_time, 0),
|
||||||
UTIL_TEST(monotonic_time_ratchet, TT_FORK),
|
UTIL_TEST(monotonic_time_ratchet, TT_FORK),
|
||||||
|
UTIL_TEST(monotonic_time_zero, 0),
|
||||||
UTIL_TEST(htonll, 0),
|
UTIL_TEST(htonll, 0),
|
||||||
UTIL_TEST(get_unquoted_path, 0),
|
UTIL_TEST(get_unquoted_path, 0),
|
||||||
END_OF_TESTCASES
|
END_OF_TESTCASES
|
||||||
|
Loading…
Reference in New Issue
Block a user