diff options
author | David Goulet <dgoulet@torproject.org> | 2022-10-14 09:12:23 -0400 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2022-10-14 09:12:23 -0400 |
commit | 28413e75605cc2d05a2a3e4c766bfbe0a47d848d (patch) | |
tree | 1b5a9a852d2d5f6800fab6bc00bc96a82452330c /src/lib | |
parent | 5080a4ff671da572afc0744d79402447ba57096f (diff) | |
parent | e86833ade650104d610327432f2e646d13f6a2a2 (diff) | |
download | tor-28413e75605cc2d05a2a3e4c766bfbe0a47d848d.tar.gz tor-28413e75605cc2d05a2a3e4c766bfbe0a47d848d.zip |
Merge branch 'maint-0.4.7'
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/time/compat_time.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/time/compat_time.c b/src/lib/time/compat_time.c index 380fbee1d5..eb716259c4 100644 --- a/src/lib/time/compat_time.c +++ b/src/lib/time/compat_time.c @@ -253,11 +253,14 @@ monotime_init_internal(void) tor_assert(mach_time_info.denom != 0); { - // approximate only. - uint64_t ns_per_tick = mach_time_info.numer / mach_time_info.denom; - uint64_t ms_per_tick = ns_per_tick * ONE_MILLION; + // We want to compute this, approximately: + // uint64_t ns_per_tick = mach_time_info.numer / mach_time_info.denom; + // uint64_t ticks_per_ms = ONE_MILLION / ns_per_tick; + // This calculation multiplies first, though, to improve accuracy. + uint64_t ticks_per_ms = (ONE_MILLION * mach_time_info.denom) + / mach_time_info.numer; // requires that tor_log2(0) == 0. - monotime_shift = tor_log2(ms_per_tick); + monotime_shift = tor_log2(ticks_per_ms); } { // For converting ticks to milliseconds in a 32-bit-friendly way, we |