pull/10970/head
Sree Kuchibhotla 8 years ago
parent aa033db15e
commit 0a3a416dde
  1. 36
      src/core/lib/iomgr/ev_epoll_thread_pool_linux.c

@ -259,7 +259,7 @@ static void eps_unref(grpc_exec_ctx *exec_ctx, epoll_set *eps);
#ifdef GRPC_WORKQUEUE_REFCOUNT_DEBUG #ifdef GRPC_WORKQUEUE_REFCOUNT_DEBUG
static void eps_add_ref_dbg(epoll_set *eps, const char *reason, static void eps_add_ref_dbg(epoll_set *eps, const char *reason,
const char *file, int line) { const char *file, int line) {
long old_cnt = gpr_atm_acq_load(&eps->ref_count); long old_cnt = gpr_atm_acq_load(&eps->ref_count);
eps_add_ref(eps); eps_add_ref(eps);
gpr_log(GPR_DEBUG, "Add ref eps: %p, old: %ld -> new:%ld (%s) - (%s, %d)", gpr_log(GPR_DEBUG, "Add ref eps: %p, old: %ld -> new:%ld (%s) - (%s, %d)",
@ -267,7 +267,7 @@ static void eps_add_ref_dbg(epoll_set *eps, const char *reason,
} }
static void eps_unref_dbg(grpc_exec_ctx *exec_ctx, epoll_set *eps, static void eps_unref_dbg(grpc_exec_ctx *exec_ctx, epoll_set *eps,
const char *reason, const char *file, int line) { const char *reason, const char *file, int line) {
long old_cnt = gpr_atm_acq_load(&eps->ref_count); long old_cnt = gpr_atm_acq_load(&eps->ref_count);
eps_unref(exec_ctx, eps); eps_unref(exec_ctx, eps);
gpr_log(GPR_DEBUG, "Unref eps: %p, old:%ld -> new:%ld (%s) - (%s, %d)", gpr_log(GPR_DEBUG, "Unref eps: %p, old:%ld -> new:%ld (%s) - (%s, %d)",
@ -320,7 +320,7 @@ static void eps_unref(grpc_exec_ctx *exec_ctx, epoll_set *eps) {
} }
static void epoll_set_add_fd_locked(epoll_set *eps, grpc_fd *fd, static void epoll_set_add_fd_locked(epoll_set *eps, grpc_fd *fd,
grpc_error **error) { grpc_error **error) {
int err; int err;
struct epoll_event ev; struct epoll_event ev;
char *err_msg; char *err_msg;
@ -345,8 +345,8 @@ static void epoll_set_add_fd_locked(epoll_set *eps, grpc_fd *fd,
} }
static void epoll_set_add_wakeup_fd_locked(epoll_set *eps, static void epoll_set_add_wakeup_fd_locked(epoll_set *eps,
grpc_wakeup_fd *wakeup_fd, grpc_wakeup_fd *wakeup_fd,
grpc_error **error) { grpc_error **error) {
struct epoll_event ev; struct epoll_event ev;
int err; int err;
char *err_msg; char *err_msg;
@ -367,8 +367,8 @@ static void epoll_set_add_wakeup_fd_locked(epoll_set *eps,
} }
} }
static void epoll_set_remove_fd(epoll_set *eps, grpc_fd *fd, static void epoll_set_remove_fd(epoll_set *eps, grpc_fd *fd, bool is_fd_closed,
bool is_fd_closed, grpc_error **error) { grpc_error **error) {
int err; int err;
char *err_msg; char *err_msg;
const char *err_desc = "epoll_set_remove_fd"; const char *err_desc = "epoll_set_remove_fd";
@ -823,8 +823,8 @@ static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
grpc_lfev_set_ready(exec_ctx, &fd->write_closure); grpc_lfev_set_ready(exec_ctx, &fd->write_closure);
} }
static void pollset_release_epoll_set(grpc_exec_ctx *exec_ctx, static void pollset_release_epoll_set(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
grpc_pollset *ps, char *reason) { char *reason) {
if (ps->eps != NULL) { if (ps->eps != NULL) {
EPS_UNREF(exec_ctx, ps->eps, reason); EPS_UNREF(exec_ctx, ps->eps, reason);
} }
@ -871,8 +871,7 @@ static void pollset_destroy(grpc_pollset *pollset) {
gpr_mu_destroy(&pollset->mu); gpr_mu_destroy(&pollset->mu);
} }
static bool maybe_do_workqueue_work(grpc_exec_ctx *exec_ctx, static bool maybe_do_workqueue_work(grpc_exec_ctx *exec_ctx, epoll_set *eps) {
epoll_set *eps) {
if (gpr_mu_trylock(&eps->workqueue_read_mu)) { if (gpr_mu_trylock(&eps->workqueue_read_mu)) {
gpr_mpscq_node *n = gpr_mpscq_pop(&eps->workqueue_items); gpr_mpscq_node *n = gpr_mpscq_pop(&eps->workqueue_items);
gpr_mu_unlock(&eps->workqueue_read_mu); gpr_mu_unlock(&eps->workqueue_read_mu);
@ -899,8 +898,8 @@ static bool maybe_do_workqueue_work(grpc_exec_ctx *exec_ctx,
} }
#define GRPC_EPOLL_MAX_EVENTS 100 #define GRPC_EPOLL_MAX_EVENTS 100
static void do_epoll_wait(grpc_exec_ctx *exec_ctx, int epoll_fd, static void do_epoll_wait(grpc_exec_ctx *exec_ctx, int epoll_fd, epoll_set *eps,
epoll_set *eps, grpc_error **error) { grpc_error **error) {
struct epoll_event ep_ev[GRPC_EPOLL_MAX_EVENTS]; struct epoll_event ep_ev[GRPC_EPOLL_MAX_EVENTS];
int ep_rv; int ep_rv;
char *err_msg; char *err_msg;
@ -954,7 +953,7 @@ static void do_epoll_wait(grpc_exec_ctx *exec_ctx, int epoll_fd,
} }
static void epoll_set_work(grpc_exec_ctx *exec_ctx, epoll_set *eps, static void epoll_set_work(grpc_exec_ctx *exec_ctx, epoll_set *eps,
grpc_error **error) { grpc_error **error) {
int epoll_fd = -1; int epoll_fd = -1;
GPR_TIMER_BEGIN("epoll_set_work", 0); GPR_TIMER_BEGIN("epoll_set_work", 0);
@ -1189,8 +1188,7 @@ static bool init_dedicated_epoll_sets() {
grpc_error *error = GRPC_ERROR_NONE; grpc_error *error = GRPC_ERROR_NONE;
bool is_success = true; bool is_success = true;
g_epoll_sets = g_epoll_sets = (epoll_set **)malloc(g_num_eps * sizeof(epoll_set *));
(epoll_set **)malloc(g_num_eps * sizeof(epoll_set *));
for (size_t i = 0; i < g_num_eps; i++) { for (size_t i = 0; i < g_num_eps; i++) {
g_epoll_sets[i] = epoll_set_create(&error); g_epoll_sets[i] = epoll_set_create(&error);
@ -1220,8 +1218,7 @@ static void shutdown_dedicated_epoll_sets() {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
for (size_t i = 0; i < g_num_eps; i++) { for (size_t i = 0; i < g_num_eps; i++) {
EPS_UNREF(&exec_ctx, g_epoll_sets[i], EPS_UNREF(&exec_ctx, g_epoll_sets[i], "shutdown_dedicated_epoll_sets");
"shutdown_dedicated_epoll_sets");
} }
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
@ -1316,8 +1313,7 @@ const grpc_event_engine_vtable *grpc_init_epoll_thread_pool_linux(void) {
return NULL; return NULL;
} }
if (!GRPC_LOG_IF_ERROR("epoll_set_global_init", if (!GRPC_LOG_IF_ERROR("epoll_set_global_init", epoll_set_global_init())) {
epoll_set_global_init())) {
return NULL; return NULL;
} }

Loading…
Cancel
Save