diff src/event/modules/ngx_epoll_module.c @ 305:4b1a3a4acc60

nginx-0.0.3-2004-04-02-19:13:20 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 02 Apr 2004 15:13:20 +0000
parents d30f2c39caae
children 6b91bfbc4123
line wrap: on
line diff
--- 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
 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_
 #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 *
         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 *
     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 *
 
     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 *
         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 *
              * 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);
         }