Replace pollset_add_fd with add_poll_obj

reviewable/pr8797/r1
Sree Kuchibhotla 8 years ago
parent f6f33d7354
commit 499b94b798
  1. 50
      src/core/lib/iomgr/ev_epoll_linux.c

@ -1158,8 +1158,8 @@ static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
gpr_mu_lock(&fd->po.mu);
grpc_workqueue *workqueue = GRPC_WORKQUEUE_REF(
(grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
grpc_workqueue *workqueue =
GRPC_WORKQUEUE_REF((grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
gpr_mu_unlock(&fd->po.mu);
return workqueue;
}
@ -1677,7 +1677,6 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
return error;
}
#if 0
static void add_poll_object(grpc_exec_ctx *exec_ctx, poll_obj *bag,
poll_obj *item, poll_obj_type bag_type,
poll_obj_type item_type) {
@ -1732,8 +1731,13 @@ retry:
getting to this branch: if they've changed, we need to throw away our
work and figure things out again. */
if (item->pi != NULL) {
GRPC_POLLING_TRACE(
"add_poll_object: Raced creating new polling island. pi_new: %p "
"(fd: %d, %s: %p)",
(void *)pi_new, FD_FROM_PO(item)->fd, poll_obj_string(bag_type),
(void *)bag);
/* No need to lock 'pi_new' here since this is a new polling island
* and no one has a reference to it yet */
* and no one has a reference to it yet */
polling_island_remove_all_fds_locked(pi_new, true, &error);
/* Ref and unref so that the polling island gets deleted during unref
@ -1745,6 +1749,17 @@ retry:
} else {
pi_new = polling_island_create(exec_ctx, NULL, &error);
}
GRPC_POLLING_TRACE(
"add_poll_object: Created new polling island. pi_new: %p (%s: %p, "
"%s: %p)",
(void *)pi_new, poll_obj_string(item_type), (void *)item,
poll_obj_string(bag_type), (void *)bag);
} else {
GRPC_POLLING_TRACE(
"add_poll_object: Same polling island. pi: %p (%s, %s)",
(void *)pi_new, poll_obj_string(item_type),
poll_obj_string(bag_type));
}
} else if (item->pi == NULL) {
/* GPR_ASSERT(bag->pi != NULL) */
@ -1757,14 +1772,28 @@ retry:
}
gpr_mu_unlock(&pi_new->mu);
GRPC_POLLING_TRACE(
"add_poll_obj: item->pi was NULL. pi_new: %p (item(%s): %p, "
"bag(%s): %p)",
(void *)pi_new, poll_obj_string(item_type), (void *)item,
poll_obj_string(bag_type), (void *)bag);
} else if (bag->pi == NULL) {
/* GPR_ASSERT(item->pi != NULL) */
/* Make pi_new to point to latest pi */
pi_new = polling_island_lock(item->pi);
gpr_mu_unlock(&pi_new->mu);
GRPC_POLLING_TRACE(
"add_poll_obj: bag->pi was NULL. pi_new: %p (item(%s): %p, "
"bag(%s): %p)",
(void *)pi_new, poll_obj_string(item_type), (void *)item,
poll_obj_string(bag_type), (void *)bag);
} else {
pi_new = polling_island_merge(item->pi, bag->pi, &error);
GRPC_POLLING_TRACE(
"add_poll_obj: polling islands merged. pi_new: %p (item(%s): %p, "
"bag(%s): %p)",
(void *)pi_new, poll_obj_string(item_type), (void *)item,
poll_obj_string(bag_type), (void *)bag);
}
/* At this point, pi_new is the polling island that both item->pi and bag->pi
@ -1792,8 +1821,14 @@ retry:
GRPC_LOG_IF_ERROR("add_poll_object", error);
GPR_TIMER_END("add_poll_object", 0);
}
#endif
static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
grpc_fd *fd) {
add_poll_object(exec_ctx, &pollset->po, &fd->po, POLL_OBJ_POLLSET,
POLL_OBJ_FD);
}
#if 0
static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
grpc_fd *fd) {
GPR_TIMER_BEGIN("pollset_add_fd", 0);
@ -1914,9 +1949,8 @@ retry:
gpr_mu_unlock(&pollset->po.mu);
GRPC_LOG_IF_ERROR("pollset_add_fd", error);
GPR_TIMER_END("pollset_add_fd", 0);
}
#endif
/*******************************************************************************
* Pollset-set Definitions

Loading…
Cancel
Save