diff --git a/third_party/libevent/evdns.c b/third_party/libevent/evdns.c index f07ecc9..da6ea19 100644 --- a/third_party/libevent/evdns.c +++ b/third_party/libevent/evdns.c @@ -134,7 +134,7 @@ typedef ev_uint8_t u_char; typedef unsigned int uint; #endif -#include +#include "event.h" #define u64 ev_uint64_t #define u32 ev_uint32_t diff --git a/third_party/libevent/evdns.h b/third_party/libevent/evdns.h index 1eb5c38..fca4ac3 100644 --- a/third_party/libevent/evdns.h +++ b/third_party/libevent/evdns.h @@ -165,7 +165,7 @@ extern "C" { #endif /* For integer types. */ -#include +#include "evutil.h" /** Error codes 0-5 are as described in RFC 1035. */ #define DNS_ERR_NONE 0 diff --git a/third_party/libevent/event-config.h b/third_party/libevent/event-config.h new file mode 100644 index 0000000..78a4727 --- /dev/null +++ b/third_party/libevent/event-config.h @@ -0,0 +1,16 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file is Chromium-specific, and brings in the appropriate +// event-config.h depending on your platform. + +#if defined(__APPLE__) +#include "mac/event-config.h" +#elif defined(__linux__) +#include "linux/event-config.h" +#elif defined(__FreeBSD__) +#include "freebsd/event-config.h" +#else +#error generate event-config.h for your platform +#endif diff --git a/third_party/libevent/event.h b/third_party/libevent/event.h index cfa0fc3..72e9b8b 100644 --- a/third_party/libevent/event.h +++ b/third_party/libevent/event.h @@ -159,7 +159,7 @@ extern "C" { #endif -#include +#include "event-config.h" #ifdef _EVENT_HAVE_SYS_TYPES_H #include #endif @@ -172,7 +172,7 @@ extern "C" { #include /* For int types. */ -#include +#include "evutil.h" #ifdef WIN32 #define WIN32_LEAN_AND_MEAN diff --git a/third_party/libevent/evutil.h b/third_party/libevent/evutil.h index dcb0013..8b664b9 100644 --- a/third_party/libevent/evutil.h +++ b/third_party/libevent/evutil.h @@ -38,7 +38,7 @@ extern "C" { #endif -#include +#include "event-config.h" #ifdef _EVENT_HAVE_SYS_TIME_H #include #endif diff --git a/third_party/libevent/README.chromium b/third_party/libevent/README.chromium index 9969566..7e5f8ba 100644 diff --git a/third_party/libevent/event.c b/third_party/libevent/event.c index 1253352..8b6cae5 100644 --- a/third_party/libevent/event.c +++ b/third_party/libevent/event.c @@ -107,7 +107,7 @@ static const struct eventop *eventops[] = { /* Global state */ struct event_base *current_base = NULL; extern struct event_base *evsignal_base; -static int use_monotonic; +static int use_monotonic = 1; /* Prototypes */ static void event_queue_insert(struct event_base *, struct event *, int); @@ -120,17 +120,6 @@ static int timeout_next(struct event_base *, struct timeval **); static void timeout_process(struct event_base *); static void timeout_correct(struct event_base *, struct timeval *); -static void -detect_monotonic(void) -{ -#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) - struct timespec ts; - - if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) - use_monotonic = 1; -#endif -} - static int gettime(struct event_base *base, struct timeval *tp) { @@ -140,18 +129,18 @@ gettime(struct event_base *base, struct timeval *tp) } #if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) - if (use_monotonic) { - struct timespec ts; - - if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1) - return (-1); + struct timespec ts; + if (use_monotonic && + clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { tp->tv_sec = ts.tv_sec; tp->tv_usec = ts.tv_nsec / 1000; return (0); } #endif + use_monotonic = 0; + return (evutil_gettimeofday(tp, NULL)); } @@ -175,7 +164,6 @@ event_base_new(void) if ((base = calloc(1, sizeof(struct event_base))) == NULL) event_err(1, "%s: calloc", __func__); - detect_monotonic(); gettime(base, &base->event_tv); min_heap_ctor(&base->timeheap);