Add `nstime_ms_since` to get time since in ms
Milliseconds are used a lot in hpa, so it is convenient to have `nstime_ms_since` function instead of dividing to `MILLION` constantly. For consistency renamed `nstime_msec` to `nstime_ms` as `ms` abbreviation is used much more commonly across codebase than `msec`. ``` $ grep -Rn '_msec' include src | wc -l 2 $ grep -RPn '_ms( |,|:)' include src | wc -l 72 ``` Function `nstime_msec` wasn't used anywhere in the code yet.
This commit is contained in:
parent
2a693b83d2
commit
b9758afff0
|
@ -26,8 +26,8 @@ static const nstime_t nstime_zero = NSTIME_ZERO_INITIALIZER;
|
|||
void nstime_init(nstime_t *time, uint64_t ns);
|
||||
void nstime_init2(nstime_t *time, uint64_t sec, uint64_t nsec);
|
||||
uint64_t nstime_ns(const nstime_t *time);
|
||||
uint64_t nstime_ms(const nstime_t *time);
|
||||
uint64_t nstime_sec(const nstime_t *time);
|
||||
uint64_t nstime_msec(const nstime_t *time);
|
||||
uint64_t nstime_nsec(const nstime_t *time);
|
||||
void nstime_copy(nstime_t *time, const nstime_t *source);
|
||||
int nstime_compare(const nstime_t *a, const nstime_t *b);
|
||||
|
@ -39,6 +39,7 @@ void nstime_imultiply(nstime_t *time, uint64_t multiplier);
|
|||
void nstime_idivide(nstime_t *time, uint64_t divisor);
|
||||
uint64_t nstime_divide(const nstime_t *time, const nstime_t *divisor);
|
||||
uint64_t nstime_ns_since(const nstime_t *past);
|
||||
uint64_t nstime_ms_since(const nstime_t *past);
|
||||
|
||||
typedef bool (nstime_monotonic_t)(void);
|
||||
extern nstime_monotonic_t *JET_MUTABLE nstime_monotonic;
|
||||
|
|
|
@ -59,5 +59,5 @@ hpa_hooks_curtime(nstime_t *r_nstime, bool first_reading) {
|
|||
|
||||
static uint64_t
|
||||
hpa_hooks_ms_since(nstime_t *past_nstime) {
|
||||
return nstime_ns_since(past_nstime) / 1000 / 1000;
|
||||
return nstime_ms_since(past_nstime);
|
||||
}
|
||||
|
|
10
src/nstime.c
10
src/nstime.c
|
@ -63,7 +63,7 @@ nstime_ns(const nstime_t *time) {
|
|||
}
|
||||
|
||||
uint64_t
|
||||
nstime_msec(const nstime_t *time) {
|
||||
nstime_ms(const nstime_t *time) {
|
||||
nstime_assert_initialized(time);
|
||||
return time->ns / MILLION;
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ nstime_divide(const nstime_t *time, const nstime_t *divisor) {
|
|||
return time->ns / divisor->ns;
|
||||
}
|
||||
|
||||
/* Returns time since *past, w/o updating *past. */
|
||||
/* Returns time since *past in nanoseconds, w/o updating *past. */
|
||||
uint64_t
|
||||
nstime_ns_since(const nstime_t *past) {
|
||||
nstime_assert_initialized(past);
|
||||
|
@ -171,6 +171,12 @@ nstime_ns_since(const nstime_t *past) {
|
|||
return now.ns - past->ns;
|
||||
}
|
||||
|
||||
/* Returns time since *past in milliseconds, w/o updating *past. */
|
||||
uint64_t
|
||||
nstime_ms_since(const nstime_t *past) {
|
||||
return nstime_ns_since(past) / MILLION;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
# define NSTIME_MONOTONIC false
|
||||
static void
|
||||
|
|
|
@ -228,6 +228,24 @@ TEST_BEGIN(test_nstime_ns_since) {
|
|||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_nstime_ms_since) {
|
||||
nstime_t delta;
|
||||
|
||||
nstime_init2(&delta, /* sec */ 1, /* nsec */ 0);
|
||||
for (uint64_t i = 0; i < 10000; i++) {
|
||||
nstime_t now;
|
||||
nstime_init_update(&now);
|
||||
|
||||
nstime_t past;
|
||||
nstime_copy(&past, &now);
|
||||
nstime_subtract(&past, &delta);
|
||||
|
||||
expect_u64_ge(nstime_ms_since(&past), nstime_ms(&delta),
|
||||
"Incorrect time since result");
|
||||
}
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_nstime_monotonic) {
|
||||
nstime_monotonic();
|
||||
}
|
||||
|
@ -248,5 +266,6 @@ main(void) {
|
|||
test_nstime_idivide,
|
||||
test_nstime_divide,
|
||||
test_nstime_ns_since,
|
||||
test_nstime_ms_since,
|
||||
test_nstime_monotonic);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue