aboutsummaryrefslogtreecommitdiff
path: root/src/event/modules/ngx_epoll_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/modules/ngx_epoll_module.c')
-rw-r--r--src/event/modules/ngx_epoll_module.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index 0b2b7d258..3f534ff17 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -76,7 +76,7 @@ static int ngx_epoll_add_event(ngx_event_t *ev, int event, u_int flags);
static int ngx_epoll_del_event(ngx_event_t *ev, int event, u_int flags);
static int ngx_epoll_add_connection(ngx_connection_t *c);
static int ngx_epoll_del_connection(ngx_connection_t *c);
-static int ngx_epoll_process_events(ngx_log_t *log);
+static int ngx_epoll_process_events(ngx_cycle_t *cycle);
static void *ngx_epoll_create_conf(ngx_cycle_t *cycle);
static char *ngx_epoll_init_conf(ngx_cycle_t *cycle, void *conf);
@@ -337,14 +337,13 @@ static int ngx_epoll_del_connection(ngx_connection_t *c)
#endif
-int ngx_epoll_process_events(ngx_log_t *log)
+int ngx_epoll_process_events(ngx_cycle_t *cycle)
{
int events;
ngx_int_t instance, i;
size_t n;
ngx_msec_t timer;
ngx_err_t err;
- ngx_cycle_t **cycle;
struct timeval tv;
ngx_connection_t *c;
ngx_epoch_msec_t delta;
@@ -357,7 +356,8 @@ int ngx_epoll_process_events(ngx_log_t *log)
timer = (ngx_msec_t) -1;
}
- ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, "epoll timer: %d", timer);
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "epoll timer: %d", timer);
events = epoll_wait(ep, event_list, nevents, timer);
@@ -376,11 +376,11 @@ int ngx_epoll_process_events(ngx_log_t *log)
if (timer != (ngx_msec_t) -1) {
delta = ngx_elapsed_msec - delta;
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0,
+ ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"epoll timer: %d, delta: %d", timer, (int) delta);
} else {
if (events == 0) {
- ngx_log_error(NGX_LOG_ALERT, log, 0,
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
"epoll_wait() returned no events without timeout");
return NGX_ERROR;
}
@@ -388,7 +388,7 @@ int ngx_epoll_process_events(ngx_log_t *log)
if (err) {
ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT,
- log, err, "epoll_wait() failed");
+ cycle->log, err, "epoll_wait() failed");
return NGX_ERROR;
}
@@ -398,7 +398,15 @@ int ngx_epoll_process_events(ngx_log_t *log)
instance = (uintptr_t) c & 1;
c = (ngx_connection_t *) ((uintptr_t) c & (uintptr_t) ~1);
- ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0,
+ if (event_list[i].events & EPOLLIN) {
+ c->read->returned_instance = instance;
+ }
+
+ if (event_list[i].events & EPOLLOUT) {
+ c->write->returned_instance = instance;
+ }
+
+ ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"epoll: fd:%d ev:%04X d:" PTR_FMT,
c->fd, event_list[i].events, event_list[i].data);
@@ -409,19 +417,19 @@ int ngx_epoll_process_events(ngx_log_t *log)
* that was just closed in this iteration
*/
- ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0,
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"epoll: stale event " PTR_FMT, c);
continue;
}
if (event_list[i].events & (EPOLLERR|EPOLLHUP)) {
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0,
+ ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"epoll_wait() error on fd:%d ev:%04X",
c->fd, event_list[i].events);
}
if (event_list[i].events & ~(EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP)) {
- ngx_log_error(NGX_LOG_ALERT, log, 0,
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
"strange epoll_wait() events fd:%d ev:%04X",
c->fd, event_list[i].events);
}