return (evutil_gettimeofday(tp, NULL));
}
+int
+event_base_gettimeofday_cached(struct event_base *base, struct timeval *tv)
+{
+ int r;
+ if (!base) {
+ base = current_base;
+ if (!current_base)
+ return evutil_gettimeofday(tv, NULL);
+ }
+
+ EVBASE_ACQUIRE_LOCK(base, th_base_lock);
+ r = gettime(base, tv);
+ EVBASE_RELEASE_LOCK(base, th_base_lock);
+ return r;
+}
+
static inline void
clear_time_cache(struct event_base *base)
{
void event_base_dump_events(struct event_base *, FILE *);
+/** Sets 'tv' to the current time (as returned by gettimeofday()),
+ looking at the cached value in 'base' if possible, and calling
+ gettimeofday() or clock_gettime() as appropriate if there is no
+ cached time.
+
+ Generally, this value will only be cached while actually
+ processing event callbacks, and may be very inaccuate if your
+ callbacks take a long time to execute.
+
+ Returns 0 on success, negative on failure.
+ */
+int event_base_gettimeofday_cached(struct event_base *base,
+ struct timeval *tv);
+
#ifdef __cplusplus
}
#endif