From 12f0a582fb28f5a7838aff00328d6729ea458670 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 6 Apr 2017 16:14:54 -0700
Subject: [PATCH] Add global wakeup to pollset

---
 src/core/lib/iomgr/ev_epollex_linux.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/core/lib/iomgr/ev_epollex_linux.c b/src/core/lib/iomgr/ev_epollex_linux.c
index 839807c246..8d3e3bd562 100644
--- a/src/core/lib/iomgr/ev_epollex_linux.c
+++ b/src/core/lib/iomgr/ev_epollex_linux.c
@@ -461,6 +461,13 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
   pollset->epfd = epoll_create1(EPOLL_CLOEXEC);
   if (pollset->epfd < 0) {
     GRPC_LOG_IF_ERROR("pollset_init", GRPC_OS_ERROR(errno, "epoll_create1"));
+  } else {
+    struct epoll_event ev = {.events = EPOLLIN | EPOLLET | EPOLLEXCLUSIVE,
+                             .data.ptr = &global_wakeup_fd};
+    if (epoll_ctl(pollset->epfd, EPOLL_CTL_ADD, global_wakeup_fd.read_fd,
+                  &ev) != 0) {
+      GRPC_LOG_IF_ERROR("pollset_init", GRPC_OS_ERROR(errno, "epoll_ctl"));
+    }
   }
   pollset->num_pollers = 0;
   gpr_atm_no_barrier_store(&pollset->shutdown_atm, 0);
-- 
GitLab