Remove the "cached gettimeofday" logic.

Previously were using this value to have a cheap highish-resolution
timer.  But we were only using it in one place, and current dogma is
to use monotime_coarse_t for this kind of thing.
This commit is contained in:
Nick Mathewson 2018-04-26 10:24:33 -04:00
parent 5e395ba2c2
commit 7cbc44eeb1
4 changed files with 6 additions and 51 deletions

5
changes/ticket25927.2 Normal file
View File

@ -0,0 +1,5 @@
o Code simplification and refactoring:
- Remove our previous logic for "cached gettimeofday()" -- our coarse
monotonic timers are fast enough for this purpose, and far less
error-prone. Implements part of ticket 25927.

View File

@ -494,51 +494,7 @@ tor_libevent_exit_loop_after_callback(struct event_base *base)
event_base_loopbreak(base);
}
#if defined(LIBEVENT_VERSION_NUMBER) && \
LIBEVENT_VERSION_NUMBER >= V(2,1,1) && \
!defined(TOR_UNIT_TESTS)
void
tor_gettimeofday_cached(struct timeval *tv)
{
event_base_gettimeofday_cached(the_event_base, tv);
}
void
tor_gettimeofday_cache_clear(void)
{
event_base_update_cache_time(the_event_base);
}
#else /* !(defined(LIBEVENT_VERSION_NUMBER) && ...) */
/** Cache the current hi-res time; the cache gets reset when libevent
* calls us. */
static struct timeval cached_time_hires = {0, 0};
/** Return a fairly recent view of the current time. */
void
tor_gettimeofday_cached(struct timeval *tv)
{
if (cached_time_hires.tv_sec == 0) {
tor_gettimeofday(&cached_time_hires);
}
*tv = cached_time_hires;
}
/** Reset the cached view of the current time, so that the next time we try
* to learn it, we will get an up-to-date value. */
void
tor_gettimeofday_cache_clear(void)
{
cached_time_hires.tv_sec = 0;
}
#ifdef TOR_UNIT_TESTS
/** For testing: force-update the cached time to a given value. */
void
tor_gettimeofday_cache_set(const struct timeval *tv)
{
tor_assert(tv);
memcpy(&cached_time_hires, tv, sizeof(*tv));
}
#if defined(TOR_UNIT_TESTS)
/** For testing: called post-fork to make libevent reinitialize
* kernel structures. */
void
@ -548,5 +504,4 @@ tor_libevent_postfork(void)
tor_assert(r == 0);
}
#endif /* defined(TOR_UNIT_TESTS) */
#endif /* defined(LIBEVENT_VERSION_NUMBER) && ... */

View File

@ -68,10 +68,7 @@ void tor_libevent_free_all(void);
int tor_init_libevent_rng(void);
void tor_gettimeofday_cached(struct timeval *tv);
void tor_gettimeofday_cache_clear(void);
#ifdef TOR_UNIT_TESTS
void tor_gettimeofday_cache_set(const struct timeval *tv);
void tor_libevent_postfork(void);
#endif

View File

@ -3440,7 +3440,6 @@ connection_handle_read(connection_t *conn)
{
int res;
tor_gettimeofday_cache_clear();
res = connection_handle_read_impl(conn);
return res;
}
@ -3983,7 +3982,6 @@ int
connection_handle_write(connection_t *conn, int force)
{
int res;
tor_gettimeofday_cache_clear();
conn->in_connection_handle_write = 1;
res = connection_handle_write_impl(conn, force);
conn->in_connection_handle_write = 0;