diff src/event/modules/ngx_kqueue_module.c @ 113:d7f606e25b99

nginx-0.0.1-2003-07-04-19:10:33 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 04 Jul 2003 15:10:33 +0000
parents da763a85be66
children ac69ab96328d
line wrap: on
line diff
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -11,16 +11,13 @@
 
 
 typedef struct {
-    int             kqueue;
-    struct kevent  *change_list;
     u_int           changes;
-    struct kevent  *event_list;
     u_int           events;
 } ngx_kqueue_conf_t;
 
 
-static int ngx_kqueue_init(ngx_log_t *log);
-static void ngx_kqueue_done(ngx_log_t *log);
+static int ngx_kqueue_init(ngx_cycle_t *cycle);
+static void ngx_kqueue_done(ngx_cycle_t *cycle);
 static int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags);
 static int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags);
 static int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags);
@@ -72,10 +69,6 @@ ngx_event_module_t  ngx_kqueue_module_ct
         NULL,                              /* delete an connection */
         ngx_kqueue_process_events,         /* process the events */
         ngx_kqueue_init,                   /* init the events */
-#if 0
-        ngx_kqueue_commit,                 /* commit the events */
-        ngx_kqueue_rollback,               /* rollback the events */
-#endif
         ngx_kqueue_done                    /* done the events */
     }
 
@@ -87,158 +80,27 @@ ngx_module_t  ngx_kqueue_module = {
     ngx_kqueue_commands,                   /* module directives */
     NGX_EVENT_MODULE,                      /* module type */
     NULL,                                  /* init module */
-    NULL,                                  /* commit module */
-    NULL,                                  /* rollback module */
-#if 0
     NULL                                   /* init child */
-#endif
 };
 
 
-#if 0
 
-static int ngx_kqueue_init(ngx_cycle_t *cycle, ngx_log_t *log)
+static int ngx_kqueue_init(ngx_cycle_t *cycle)
 {
     struct timespec     ts;
     ngx_kqueue_conf_t  *kcf;
 
     kcf = ngx_event_get_conf(cycle->conf_ctx, ngx_kqueue_module);
 
-ngx_log_debug(log, "CH: %d" _ kcf->changes);
-ngx_log_debug(log, "EV: %d" _ kcf->events);
-
-    if (ngx_kqueue == -1) {
-        kcf->kqueue = kqueue();
-
-        if (kcf->kqueue == -1) {
-            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "kqueue() failed");
-            return NGX_ERROR;
-        }
-
-    } else {
-        kcf->kqueue = ngx_kqueue;
-    }
-
-    if (max_changes < kcf->changes) {
-        if (nchanges) {
-            ts.tv_sec = 0;
-            ts.tv_nsec = 0;
-
-            if (kevent(ngx_kqueue, change_list, nchanges, NULL, 0, &ts) == -1) {
-                ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kevent() failed");
-                return NGX_ERROR;
-            }
-
-            nchanges = 0;
-        }
-
-        ngx_test_null(kcf->change_list,
-                      ngx_alloc(kcf->changes * sizeof(struct kevent), log),
-                      NGX_ERROR);
-
-    } else {
-        kcf->change_list = change_list;
-    }
-
-    if (nevents < kcf->events) {
-        ngx_test_null(kcf->event_list,
-                      ngx_alloc(kcf->events * sizeof(struct kevent), log),
-                      NGX_ERROR);
-    } else {
-        kcf->event_list = event_list;
-    }
-
-    if (ngx_event_timer_init(cycle, log) == NGX_ERROR) {
-        return NGX_ERROR;
-    }
-
-    return NGX_OK;
-}
-
-
-static void ngx_kqueue_commit(ngx_cycle_t *cycle, ngx_log_t *log)
-{
-    ngx_kqueue_conf_t  *kcf;
-
-    kcf = ngx_event_get_conf(cycle->conf_ctx, ngx_kqueue_module);
-
-    ngx_kqueue = kcf->kqueue;
-
-    if (change_list != kcf->change_list) {
-        ngx_free(change_list);
-        change_list = kcf->change_list;
-    }
-
-    max_changes = kcf->changes;
-
-    if (event_list != kcf->event_list) {
-        ngx_free(event_list);
-        event_list = kcf->event_list;
-    }
-
-    nevents = kcf->events;
-
-    ngx_event_timer_commit(cycle, log);
-
-    ngx_event_actions = ngx_kqueue_module_ctx.actions;
-    ngx_io = ngx_os_io;
-
-    ngx_event_flags = NGX_HAVE_LEVEL_EVENT
-                     |NGX_HAVE_ONESHOT_EVENT
-#if (HAVE_CLEAR_EVENT)
-                     |NGX_HAVE_CLEAR_EVENT
-#else
-                     |NGX_USE_LEVEL_EVENT
-#endif
-#if (HAVE_LOWAT_EVENT)
-                     |NGX_HAVE_LOWAT_EVENT
-#endif
-                     |NGX_HAVE_KQUEUE_EVENT;
-}
-
-
-static void ngx_kqueue_rollback(ngx_cycle_t *cycle, ngx_log_t *log)
-{
-    ngx_kqueue_conf_t  *kcf;
-
-    kcf = ngx_event_get_conf(cycle->conf_ctx, ngx_kqueue_module);
-
-    if (ngx_kqueue == -1) {
-        if (close(kcf->kqueue) == -1) {
-            ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
-                          "kqueue close() failed");
-        }
-    }
-
-    if (change_list != kcf->change_list) {
-        ngx_free(kcf->change_list);
-    }
-
-    if (event_list != kcf->event_list) {
-        ngx_free(kcf->event_list);
-    }
-
-    ngx_event_timer_rollback(cycle, log);
-}
-
-#endif
-
-
-static int ngx_kqueue_init(ngx_log_t *log)
-{
-    struct timespec     ts;
-    ngx_kqueue_conf_t  *kcf;
-
-    kcf = ngx_event_get_conf(ngx_kqueue_module);
-
-ngx_log_debug(log, "CH: %d" _ kcf->changes);
-ngx_log_debug(log, "EV: %d" _ kcf->events);
+ngx_log_debug(cycle->log, "CH: %d" _ kcf->changes);
+ngx_log_debug(cycle->log, "EV: %d" _ kcf->events);
 
     if (ngx_kqueue == -1) {
         ngx_kqueue = kqueue();
 
         if (ngx_kqueue == -1) {
-            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "kqueue() failed");
+            ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
+                          "kqueue() failed");
             return NGX_ERROR;
         }
     }
@@ -249,9 +111,11 @@ ngx_log_debug(log, "EV: %d" _ kcf->event
             ts.tv_nsec = 0;
 
             if (kevent(ngx_kqueue, change_list, nchanges, NULL, 0, &ts) == -1) {
-                ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kevent() failed");
+                ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
+                              "kevent() failed");
                 return NGX_ERROR;
             }
+            nchanges = 0;
         }
 
         if (change_list) {
@@ -259,12 +123,12 @@ ngx_log_debug(log, "EV: %d" _ kcf->event
         }
 
         ngx_test_null(change_list,
-                      ngx_alloc(kcf->changes * sizeof(struct kevent), log),
+                      ngx_alloc(kcf->changes * sizeof(struct kevent),
+                                cycle->log),
                       NGX_ERROR);
     }
 
     max_changes = kcf->changes;
-    nchanges = 0;
 
     if (nevents < kcf->events) {
         if (event_list) {
@@ -272,18 +136,18 @@ ngx_log_debug(log, "EV: %d" _ kcf->event
         }
 
         ngx_test_null(event_list,
-                      ngx_alloc(kcf->events * sizeof(struct kevent), log),
+                      ngx_alloc(kcf->events * sizeof(struct kevent),
+                                cycle->log),
                       NGX_ERROR);
     }
 
     nevents = kcf->events;
 
-    if (ngx_event_timer_init(log) == NGX_ERROR) {
+    if (ngx_event_timer_init(cycle) == NGX_ERROR) {
         return NGX_ERROR;
     }
 
-    /* TODO: re-add active events with new udata
-             if ecf->connections was increased */
+    ngx_io = ngx_os_io;
 
     ngx_event_actions = ngx_kqueue_module_ctx.actions;
 
@@ -303,15 +167,16 @@ ngx_log_debug(log, "EV: %d" _ kcf->event
 }
 
 
-static void ngx_kqueue_done(ngx_log_t *log)
+static void ngx_kqueue_done(ngx_cycle_t *cycle)
 {
     if (close(ngx_kqueue) == -1) {
-        ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kqueue close() failed");
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
+                      "kqueue close() failed");
     }
 
     ngx_kqueue = -1;
 
-    ngx_event_timer_done(log);
+    ngx_event_timer_done(cycle);
 
     ngx_free(change_list);
     ngx_free(event_list);