diff src/event/ngx_event_posted.c @ 375:744ccb59062d

nginx-0.0.7-2004-07-02-19:54:34 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 02 Jul 2004 15:54:34 +0000
parents 213f17e9f776
children d0451e402e27
line wrap: on
line diff
--- a/src/event/ngx_event_posted.c
+++ b/src/event/ngx_event_posted.c
@@ -27,13 +27,17 @@ void ngx_event_process_posted(ngx_cycle_
             return;
         }
 
-        ngx_posted_events = ev->next;
+        ngx_delete_posted_event(ev);
+
+#if 0
+        /* do not check instance ??? */
 
         if (ev->accept) {
             continue;
         }
+#endif
 
-        if ((!ev->posted && !ev->active)
+        if (ev->closed
             || (ev->use_instance && ev->instance != ev->returned_instance))
         {
             /*
@@ -46,10 +50,6 @@ void ngx_event_process_posted(ngx_cycle_
             continue;
         }
 
-        if (ev->posted) {
-            ev->posted = 0;
-        }
-
         ev->event_handler(ev);
     }
 }
@@ -59,12 +59,11 @@ void ngx_event_process_posted(ngx_cycle_
 
 ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle)
 {
-    ngx_event_t  *ev, **ep;
+    ngx_event_t  *ev;
 
     for ( ;; ) {
 
         ev = (ngx_event_t *) ngx_posted_events;
-        ep = (ngx_event_t **) &ngx_posted_events;
 
         for ( ;; ) {
 
@@ -76,23 +75,22 @@ ngx_int_t ngx_event_thread_process_poste
                 return NGX_OK;
             }
 
-            ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                          "posted event lock:%d " PTR_FMT,
-                          *(ev->lock), ev->lock);
-
             if (ngx_trylock(ev->lock) == 0) {
 
                 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                                "posted event " PTR_FMT " is busy", ev);
 
-                ep = &ev->next;
                 ev = ev->next;
                 continue;
             }
 
-            *ep = ev->next;
+            ngx_delete_posted_event(ev);
 
-            if ((!ev->posted && !ev->active)
+            ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                          "event instance: c:%d i:%d r:%d",
+                          ev->closed, ev->instance, ev->returned_instance);
+
+            if (ev->closed
                 || (ev->use_instance && ev->instance != ev->returned_instance))
             {
                 /*
@@ -102,7 +100,7 @@ ngx_int_t ngx_event_thread_process_poste
                  */
 
                 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ngx_cycle->log, 0,
-                               "kevent: stale event " PTR_FMT, ev);
+                               "stale posted event " PTR_FMT, ev);
 
                 ngx_unlock(ev->lock);
 
@@ -113,16 +111,21 @@ ngx_int_t ngx_event_thread_process_poste
 
             ev->locked = 1;
 
-            if (ev->posted) {
-                ev->ready = ev->posted_ready;
-                ev->timedout = ev->posted_timedout;
-                ev->available = ev->posted_available;
-                ev->kq_eof = ev->posted_eof;
+            ev->ready |= ev->posted_ready;
+            ev->timedout |= ev->posted_timedout;
+            ev->available |= ev->posted_available;
+            ev->pending_eof |= ev->posted_eof;
 #if (HAVE_KQUEUE)
-                ev->kq_errno = ev->posted_errno;
+            ev->kq_errno |= ev->posted_errno;
 #endif
-                ev->posted = 0;
-            }
+
+            ev->posted_ready = 0;
+            ev->posted_timedout = 0;
+            ev->posted_available = 0;
+            ev->posted_eof = 0;
+#if (HAVE_KQUEUE)
+            ev->posted_errno = 0;
+#endif
 
             ngx_mutex_unlock(ngx_posted_events_mutex);