On Aug 22, 2013, at 5:01 AM, [email protected] wrote: > Updated Branches: > refs/heads/master e5d27294b -> fa176442f > > > TS-2137: Use relative timeout in EventNotify::timedwait() > > 1) Use relative timeout in EventNotify::timedwait() function. > 2) Remove unused m_name variable. > 3) Use the correct marco HAVE_EVENTFD instead of TS_HAS_EVENTFD which > is outdated.
Good catch! > > Signed-off-by: Yunkai Zhang <[email protected]> > > > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo > Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/fa176442 > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/fa176442 > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/fa176442 > > Branch: refs/heads/master > Commit: fa176442f45a3d5e8a9dce332775172192f53f34 > Parents: e5d2729 > Author: Yunkai Zhang <[email protected]> > Authored: Thu Aug 22 16:13:36 2013 +0800 > Committer: Yunkai Zhang <[email protected]> > Committed: Thu Aug 22 19:56:02 2013 +0800 > > ---------------------------------------------------------------------- > lib/ts/EventNotify.cc | 39 +++++++++++++++++++-------------------- > lib/ts/EventNotify.h | 7 +++---- > 2 files changed, 22 insertions(+), 24 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/fa176442/lib/ts/EventNotify.cc > ---------------------------------------------------------------------- > diff --git a/lib/ts/EventNotify.cc b/lib/ts/EventNotify.cc > index 5d0cc53..3a499b6 100644 > --- a/lib/ts/EventNotify.cc > +++ b/lib/ts/EventNotify.cc > @@ -30,14 +30,14 @@ > #include "EventNotify.h" > #include "ink_hrtime.h" > > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > #include <sys/eventfd.h> > #include <sys/epoll.h> > #endif > > -EventNotify::EventNotify(const char *name): m_name(name) > +EventNotify::EventNotify() > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > int ret; > struct epoll_event ev; > > @@ -59,14 +59,14 @@ EventNotify::EventNotify(const char *name): m_name(name) > ink_release_assert(ret != -1); > #else > ink_cond_init(&m_cond); > - ink_mutex_init(&m_mutex, m_name); > + ink_mutex_init(&m_mutex, NULL); > #endif > } > > void > EventNotify::signal(void) > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > ssize_t nr; > uint64_t value = 1; > nr = write(m_event_fd, &value, sizeof(uint64_t)); > @@ -79,7 +79,7 @@ EventNotify::signal(void) > void > EventNotify::wait(void) > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > ssize_t nr; > uint64_t value = 0; > nr = read(m_event_fd, &value, sizeof(uint64_t)); > @@ -90,20 +90,13 @@ EventNotify::wait(void) > } > > int > -EventNotify::timedwait(ink_timestruc *abstime) > +EventNotify::timedwait(int timeout) // milliseconds Unless -1 is a meaningful value, I'd prefer this was unsigned. > { > -#ifdef TS_HAS_EVENTFD > - int timeout; > +#ifdef HAVE_EVENTFD > ssize_t nr, nr_fd = 0; > uint64_t value = 0; > - struct timeval curtime; > struct epoll_event ev; > > - // Convert absolute time to relative time > - gettimeofday(&curtime, NULL); > - timeout = (abstime->tv_sec - curtime.tv_sec) * 1000 > - + (abstime->tv_nsec / 1000 - curtime.tv_usec) / 1000; > - > // > // When timeout < 0, epoll_wait() will wait indefinitely, but > // pthread_cond_timedwait() will return ETIMEDOUT immediately. > @@ -126,14 +119,20 @@ EventNotify::timedwait(ink_timestruc *abstime) > > return 0; > #else > - return ink_cond_timedwait(&m_cond, &m_mutex, abstime); > + ink_timestruc abstime; > + ink_hrtime curtime; > + > + curtime = ink_get_hrtime_internal() + timeout * HRTIME_MSECOND; > + abstime = ink_based_hrtime_to_timespec(curtime); > + > + return ink_cond_timedwait(&m_cond, &m_mutex, &abstime); > #endif > } > > void > EventNotify::lock(void) > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > // do nothing > #else > ink_mutex_acquire(&m_mutex); > @@ -143,7 +142,7 @@ EventNotify::lock(void) > bool > EventNotify::trylock(void) > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > return true; > #else > return ink_mutex_try_acquire(&m_mutex); > @@ -153,7 +152,7 @@ EventNotify::trylock(void) > void > EventNotify::unlock(void) > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > // do nothing > #else > ink_mutex_release(&m_mutex); > @@ -162,7 +161,7 @@ EventNotify::unlock(void) > > EventNotify::~EventNotify() > { > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > close(m_event_fd); > close(m_epoll_fd); > #else > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/fa176442/lib/ts/EventNotify.h > ---------------------------------------------------------------------- > diff --git a/lib/ts/EventNotify.h b/lib/ts/EventNotify.h > index 16e4809..135f037 100644 > --- a/lib/ts/EventNotify.h > +++ b/lib/ts/EventNotify.h Please add header guards to this file. > @@ -33,18 +33,17 @@ > class EventNotify > { > public: > - EventNotify(const char *name = NULL); > + EventNotify(); > void signal(void); > void wait(void); > - int timedwait(ink_timestruc *abstime); > + int timedwait(int timeout); // milliseconds > void lock(void); > bool trylock(void); > void unlock(void); > ~EventNotify(); > > private: > - const char *m_name; > -#ifdef TS_HAS_EVENTFD > +#ifdef HAVE_EVENTFD > int m_event_fd; > int m_epoll_fd; > #else >
