pull/10507/head
Craig Tiller 8 years ago
parent d6255951dc
commit 1ad9477da3
  1. 26
      src/core/lib/iomgr/ev_epollex_linux.c

@ -530,20 +530,38 @@ static grpc_error *pollset_kick(grpc_pollset *p,
if (specific_worker == NULL) {
if (gpr_tls_get(&g_current_thread_pollset) != (intptr_t)p) {
if (p->num_pollers == 0) {
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG, "PS:%p kicked_without_poller", p);
}
p->kicked_without_poller = true;
return GRPC_ERROR_NONE;
} else {
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG, "PS:%p kicked_via_wakeup_fd", p);
}
return grpc_wakeup_fd_wakeup(&p->pollset_wakeup);
}
} else {
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG, "PS:%p kicked_but_awake", p);
}
return GRPC_ERROR_NONE;
}
} else if (gpr_tls_get(&g_current_thread_worker) ==
(intptr_t)specific_worker) {
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG, "PS:%p kicked_but_awake", p);
}
return GRPC_ERROR_NONE;
} else if (specific_worker == p->root_worker) {
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG, "PS:%p kicked_via_wakeup_fd", p);
}
return grpc_wakeup_fd_wakeup(&p->pollset_wakeup);
} else {
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG, "PS:%p kicked_via_cv", p);
}
gpr_cv_signal(&specific_worker->cv);
return GRPC_ERROR_NONE;
}
@ -716,9 +734,11 @@ static grpc_error *pollset_poll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
bool read_ev = (events[i].events & (EPOLLIN | EPOLLPRI)) != 0;
bool write_ev = (events[i].events & EPOLLOUT) != 0;
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG,
"PS:%p poll got fd: is_wq=%d cancel=%d read=%d write=%d",
pollset, is_workqueue, cancel, read_ev, write_ev);
gpr_log(
GPR_DEBUG,
"PS:%p poll got fd %p(%d/%d): is_wq=%d cancel=%d read=%d write=%d",
pollset, fd, fd->fd, fd->workqueue_wakeup_fd.read_fd, is_workqueue,
cancel, read_ev, write_ev);
}
if (is_workqueue) {
append_error(&error,

Loading…
Cancel
Save