      // TODO sort channel by priority
      eventHandling_ = true;
      for (ChannelList::iterator it = activeChannels_.begin();
-@@ -201,7 +195,7 @@ void EventLoop::abortNotInLoopThread()
+@@ -216,7 +210,7 @@ void EventLoop::abortNotInLoopThread()
  void EventLoop::wakeup()
  {
    uint64_t one = 1;

 
 IgnoreSigPipe initObj;
 }
@@ -63,11 +51,15 @@ EventLoop::EventLoop()
     callingPendingFunctors_(false),
     threadId_(CurrentThread::tid()),
     poller_(Poller::newDefaultPoller(this)),
-    timerQueue_(new TimerQueue(this)),
-    wakeupFd_(createEventfd()),
-    wakeupChannel_(new Channel(this, wakeupFd_))
+    timerQueue_(new TimerQueue(this))
 {
   LOG_TRACE << "EventLoop created " << this << " in thread " << threadId_;
+  if (::socketpair(AF_UNIX, SOCK_STREAM, 0, wakeupFd_) < 0)
+  {
+    LOG_SYSFATAL << "Failed in socketpair";

-  return be16toh(net16);
+  return bswap_16(net16);
 }
-#if __GNUC_MINOR__ >= 6
-#pragma GCC diagnostic pop
-#else
-#pragma GCC diagnostic error "-Wconversion"
-#pragma GCC diagnostic error "-Wold-style-cast"
 #endif
 
-
 }
 }
 }
diff --git a/muduo/net/EventLoop.cc b/muduo/net/EventLoop.cc
--- a/muduo/net/EventLoop.cc
+++ b/muduo/net/EventLoop.cc
@@ -18,7 +18,8 @@
 #include <boost/bind.hpp>
 
 #include <signal.h>
