[tor-commits] [tor/master] Expose a function that computes stamp units from msec.
nickm at torproject.org
nickm at torproject.org
Fri Apr 13 14:47:29 UTC 2018
commit d8ef9a2d1e0701073d8209115bc3c34857c2d7b4
Author: Nick Mathewson <nickm at torproject.org>
Date: Tue Apr 10 10:47:11 2018 -0400
Expose a function that computes stamp units from msec.
(It turns out we can't just expose STAMP_TICKS_PER_SECOND, since
Apple doesn't have that.)
---
src/common/compat_time.c | 13 +++++++++++++
src/common/compat_time.h | 1 +
src/test/test_util.c | 7 +++++++
3 files changed, 21 insertions(+)
diff --git a/src/common/compat_time.c b/src/common/compat_time.c
index 183a60a48..b940447b6 100644
--- a/src/common/compat_time.c
+++ b/src/common/compat_time.c
@@ -830,11 +830,24 @@ monotime_coarse_stamp_units_to_approx_msec(uint64_t units)
return (abstime_diff * mach_time_info.numer) /
(mach_time_info.denom * ONE_MILLION);
}
+uint64_t
+monotime_msec_to_approx_coarse_stamp_units(uint64_t msec)
+{
+ uint64_t abstime_val =
+ (((uint64_t)msec) * ONE_MILLION * mach_time_info.denom) /
+ mach_time_info.numer;
+ return abstime_val >> monotime_shift;
+}
#else
uint64_t
monotime_coarse_stamp_units_to_approx_msec(uint64_t units)
{
return (units * 1000) / STAMP_TICKS_PER_SECOND;
}
+uint64_t
+monotime_msec_to_approx_coarse_stamp_units(uint64_t msec)
+{
+ return (msec * STAMP_TICKS_PER_SECOND) / 1000;
+}
#endif
diff --git a/src/common/compat_time.h b/src/common/compat_time.h
index 6ddd11883..75b57f6f2 100644
--- a/src/common/compat_time.h
+++ b/src/common/compat_time.h
@@ -150,6 +150,7 @@ uint32_t monotime_coarse_to_stamp(const monotime_coarse_t *t);
* into an approximate number of milliseconds.
*/
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);
#if defined(MONOTIME_COARSE_TYPE_IS_DIFFERENT)
diff --git a/src/test/test_util.c b/src/test/test_util.c
index ce8567d9a..3dd2b51a3 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -5907,6 +5907,13 @@ test_util_monotonic_time(void *arg)
tt_u64_op(coarse_stamp_diff, OP_GE, 120);
tt_u64_op(coarse_stamp_diff, OP_LE, 1200);
+ {
+ uint64_t units = monotime_msec_to_approx_coarse_stamp_units(5000);
+ uint64_t ms = monotime_coarse_stamp_units_to_approx_msec(units);
+ tt_int_op(ms, OP_GE, 4950);
+ tt_int_op(ms, OP_LT, 5050);
+ }
+
done:
;
}
More information about the tor-commits
mailing list