Merge branch 'epex4' of github.com:ctiller/grpc into epex4

pull/10712/head
Craig Tiller 8 years ago
commit afab796f82
  1. 10
      src/core/lib/iomgr/ev_epollex_linux.c
  2. 3
      src/core/lib/surface/completion_queue.c
  3. 11
      test/cpp/microbenchmarks/bm_pollset.cc

@ -564,8 +564,9 @@ static grpc_error *pollable_materialize(pollable *p) {
if (new_epfd < 0) {
return GRPC_OS_ERROR(errno, "epoll_create1");
} else {
struct epoll_event ev = {.events = (uint32_t)(EPOLLIN | EPOLLET | EPOLLEXCLUSIVE),
.data.ptr = &global_wakeup_fd};
struct epoll_event ev = {
.events = (uint32_t)(EPOLLIN | EPOLLET | EPOLLEXCLUSIVE),
.data.ptr = &global_wakeup_fd};
if (epoll_ctl(new_epfd, EPOLL_CTL_ADD, global_wakeup_fd.read_fd, &ev) !=
0) {
grpc_error *err = GRPC_OS_ERROR(errno, "epoll_ctl");
@ -912,10 +913,9 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
bool write_ev = (events[i].events & EPOLLOUT) != 0;
if (grpc_polling_trace) {
gpr_log(GPR_DEBUG,
"PS:%p poll %p got fd %p(%d/%d): is_wq=%d cancel=%d read=%d "
"PS:%p poll %p got fd %p: is_wq=%d cancel=%d read=%d "
"write=%d",
pollset, p, fd, fd->fd, fd->workqueue_wakeup_fd.read_fd,
is_workqueue, cancel, read_ev, write_ev);
pollset, p, fd, is_workqueue, cancel, read_ev, write_ev);
}
if (is_workqueue) {
append_error(&error,

@ -98,7 +98,8 @@ static void non_polling_poller_init(grpc_pollset *pollset, gpr_mu **mu) {
*mu = &npp->mu;
}
static void non_polling_poller_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
static void non_polling_poller_destroy(grpc_exec_ctx *exec_ctx,
grpc_pollset *pollset) {
non_polling_poller *npp = (non_polling_poller *)pollset;
gpr_mu_destroy(&npp->mu);
}

@ -157,17 +157,18 @@ static void BM_PollAddFd(benchmark::State& state) {
grpc_pollset_init(ps, &mu);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_wakeup_fd wakeup_fd;
GPR_ASSERT(GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd)));
grpc_fd *fd = grpc_fd_create(wakeup_fd.read_fd, "xxx");
GPR_ASSERT(
GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd)));
grpc_fd* fd = grpc_fd_create(wakeup_fd.read_fd, "xxx");
while (state.KeepRunning()) {
grpc_pollset_add_fd(&exec_ctx, ps, fd);
grpc_exec_ctx_flush(&exec_ctx);
grpc_pollset_add_fd(&exec_ctx, ps, fd);
grpc_exec_ctx_flush(&exec_ctx);
}
grpc_fd_orphan(&exec_ctx, fd, NULL, NULL, "xxx");
grpc_closure shutdown_ps_closure;
grpc_closure_init(&shutdown_ps_closure, shutdown_ps, ps,
grpc_schedule_on_exec_ctx);
gpr_mu_lock(mu);
gpr_mu_lock(mu);
grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure);
gpr_mu_unlock(mu);
grpc_exec_ctx_finish(&exec_ctx);

Loading…
Cancel
Save