nginx-0.0.1-2003-12-14-23:10:27 import
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index d36160a..0ddf4f6 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -419,23 +419,17 @@
for (i = 0; i < events; i++) {
-#if (NGX_DEBUG_EVENT)
- if (event_list[i].ident > 0x8000000
- && event_list[i].ident != (unsigned) -1)
- {
- ngx_log_debug(log,
- "kevent: %08x: ft:%d fl:%08x ff:%08x d:%d ud:%08x" _
- event_list[i].ident _ event_list[i].filter _
- event_list[i].flags _ event_list[i].fflags _
- event_list[i].data _ event_list[i].udata);
- } else {
- ngx_log_debug(log,
- "kevent: %d: ft:%d fl:%08x ff:%08x d:%d ud:%08x" _
- event_list[i].ident _ event_list[i].filter _
- event_list[i].flags _ event_list[i].fflags _
- event_list[i].data _ event_list[i].udata);
- }
-#endif
+ ngx_log_debug6(NGX_LOG_DEBUG_EVENT, log, 0,
+
+ (event_list[i].ident > 0x8000000
+ && event_list[i].ident != (unsigned) -1) ?
+ "kevent: " PTR_FMT ": ft:%d fl:%04X ff:%08X d:%d ud:"
+ PTR_FMT:
+ "kevent: %d: ft:%d fl:%04X ff:%08X d:%d ud:" PTR_FMT,
+
+ event_list[i].ident, event_list[i].filter,
+ event_list[i].flags, event_list[i].fflags,
+ event_list[i].data, event_list[i].udata);
if (event_list[i].flags & EV_ERROR) {
ngx_log_error(NGX_LOG_ALERT, log, event_list[i].data,
@@ -453,13 +447,15 @@
instance = (uintptr_t) ev & 1;
ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1);
- /*
- * it's a stale event from a file descriptor
- * that was just closed in this iteration
- */
-
if (ev->active == 0 || ev->instance != instance) {
- ngx_log_debug(log, "stale kevent");
+
+ /*
+ * it's a stale event from a file descriptor
+ * that was just closed in this iteration
+ */
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0,
+ "kevent: stale event " PTR_FMT, ev);
continue;
}
@@ -511,6 +507,29 @@
}
+static void ngx_kqueue_thread_handler(ngx_event_t *ev, ngx_log_t *log)
+{
+ ngx_int_t instance;
+
+ instance = (uintptr_t) ev & 1;
+ ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1);
+
+ if (ev->active && ev->instance == instance) {
+ ev->event_handler(ev);
+ return;
+ }
+
+ /*
+ * it's a stale event from a file descriptor
+ * that was just closed in this iteration
+ */
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0,
+ "kevent: stale event " PTR_FMT, ev);
+
+}
+
+
static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle)
{
ngx_kqueue_conf_t *kcf;
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index c0852e8..4ed9498 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -4,6 +4,12 @@
#include <ngx_event.h>
+/*
+ * TODO: in multithreaded enviroment all timer operations must be
+ * protected by the single mutex
+ */
+
+
ngx_rbtree_t *ngx_event_timer_rbtree;
ngx_rbtree_t ngx_event_timer_sentinel;
@@ -39,7 +45,11 @@
} else {
return (ngx_msec_t)
+ (node->key * NGX_TIMER_RESOLUTION -
+ ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION);
+#if 0
(node->key * NGX_TIMER_RESOLUTION - ngx_elapsed_msec);
+#endif
}
}
@@ -82,281 +92,3 @@
break;
}
}
-
-
-#if 0
-
-/* TODO: in multithreaded enviroment all timer operations must be
- protected by the single mutex */
-
-
-#if 0
-static ngx_event_t *ngx_timer_queue, ngx_temp_timer_queue;
-static int ngx_expire_timers;
-#endif
-
-static ngx_event_t *ngx_timer_queue;
-static ngx_msec_t *ngx_timer_delta;
-static int ngx_timer_cur_queue;
-static int ngx_timer_queue_num;
-
-
-int ngx_event_timer_init(ngx_cycle_t *cycle)
-{
- ngx_int_t i;
- ngx_msec_t *new_delta;
- ngx_event_t *new_queue;
- ngx_event_conf_t *ecf;
-
- ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module);
-
- if (ngx_timer_queue_num < ecf->timer_queues) {
- ngx_test_null(new_queue,
- ngx_alloc(ecf->timer_queues * sizeof(ngx_event_t),
- cycle->log),
- NGX_ERROR);
-
- for (i = 0; i < ngx_timer_queue_num; i++) {
- new_queue[i] = ngx_timer_queue[i];
- }
-
- if (ngx_timer_queue) {
- ngx_free(ngx_timer_queue);
- }
-
- ngx_timer_queue = new_queue;
-
- ngx_test_null(new_delta,
- ngx_calloc(ecf->timer_queues * sizeof(ngx_msec_t),
- cycle->log),
- NGX_ERROR);
-
- for (i = 0; i < ngx_timer_queue_num; i++) {
- new_delta[i] = ngx_timer_delta[i];
- }
-
- if (ngx_timer_delta) {
- ngx_free(ngx_timer_delta);
- }
-
- ngx_timer_delta = new_delta;
-
- ngx_timer_queue_num = ecf->timer_queues;
- ngx_timer_cur_queue = 0;
-
- for (/* void */; i < ngx_timer_queue_num; i++) {
- ngx_timer_queue[i].timer_prev = &ngx_timer_queue[i];
- ngx_timer_queue[i].timer_next = &ngx_timer_queue[i];
- }
-
- } else if (ngx_timer_queue_num > ecf->timer_queues) {
- /* STUB */
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "NOT READY: timer");
- exit(1);
- }
-
-#if 0
- ngx_temp_timer_queue.timer_prev = &ngx_temp_timer_queue;
- ngx_temp_timer_queue.timer_next = &ngx_temp_timer_queue;
-#endif
-
- return NGX_OK;;
-}
-
-
-void ngx_event_timer_done(ngx_cycle_t *cycle)
-{
- ngx_free(ngx_timer_queue);
- ngx_timer_queue = NULL;
-
- ngx_free(ngx_timer_delta);
- ngx_timer_delta = NULL;
-
- ngx_timer_queue_num = 0;
-}
-
-
-void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
-{
- ngx_event_t *e, *queue;
-#if (NGX_DEBUG_EVENT)
- ngx_connection_t *c;
-#endif
-
- if (ev->timer_set) {
- ngx_del_timer(ev);
- }
-
-#if (NGX_DEBUG_EVENT)
- c = ev->data;
- ngx_log_debug(ev->log, "set timer: %d:%d:%d, slot: %d" _
- c->fd _ ev->write _ timer _ ngx_timer_cur_queue);
-#endif
-
- if (ev->timer_next || ev->timer_prev) {
- ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already set");
- return;
- }
-
- queue = &ngx_timer_queue[ngx_timer_cur_queue];
- timer += ngx_timer_delta[ngx_timer_cur_queue++];
-
- if (ngx_timer_cur_queue >= ngx_timer_queue_num) {
- ngx_timer_cur_queue = 0;
- }
-
-
-#if 0
- if (ngx_expire_timers) {
- queue = &ngx_temp_timer_queue;
-
- } else {
- queue = &ngx_timer_queue[ngx_timer_cur_queue++];
-
- if (ngx_timer_cur_queue >= ngx_timer_queue_num) {
- ngx_timer_cur_queue = 0;
- }
- }
-#endif
-
- for (e = queue->timer_next;
- e != queue && timer > e->timer_delta;
- e = e->timer_next)
- {
- timer -= e->timer_delta;
- }
-
- ev->timer_delta = timer;
-
- ev->timer_next = e;
- ev->timer_prev = e->timer_prev;
-
- e->timer_prev->timer_next = ev;
- e->timer_prev = ev;
-
- ev->timer_set = 1;
-
- return;
-}
-
-
-int ngx_event_find_timer(void)
-{
- ngx_int_t i;
- ngx_msec_t timer;
-
- timer = NGX_MAX_MSEC;
-
- for (i = 0; i < ngx_timer_queue_num; i++) {
- if (ngx_timer_queue[i].timer_next == &ngx_timer_queue[i]) {
- continue;
- }
-
- if (timer > ngx_timer_queue[i].timer_next->timer_delta) {
- timer = ngx_timer_queue[i].timer_next->timer_delta;
- }
- }
-
- if (timer == NGX_MAX_MSEC) {
- return 0;
- }
-
- return timer;
-}
-
-
-void ngx_event_set_timer_delta(ngx_msec_t timer)
-{
- ngx_int_t i;
-
- for (i = 0; i < ngx_timer_queue_num; i++) {
- ngx_timer_delta[i] = timer;
- }
-}
-
-
-/* void ngx_event_expire_timers() */
-void ngx_event_expire_timers(ngx_msec_t timer)
-{
- ngx_int_t i;
-#if 0
- ngx_msec_t delta;
-#endif
- ngx_event_t *ev;
-
-#if 0
- ngx_expire_timers = 1;
-#endif
-
- for (i = 0; i < ngx_timer_queue_num; i++) {
-
-#if 0
- delta = timer;
-#endif
-
- for ( ;; ) {
- ev = ngx_timer_queue[i].timer_next;
-
- if (ev == &ngx_timer_queue[i]) {
- break;
- }
-
- if (ev->timer_delta > ngx_timer_delta[i]) {
- ev->timer_delta -= ngx_timer_delta[i];
- break;
- }
-
- ngx_timer_delta[i] -= ev->timer_delta;
-
-#if 0
- if (ev->timer_delta > delta) {
- ev->timer_delta -= delta;
- break;
- }
-
- delta -= ev->timer_delta;
-#endif
-
- ngx_del_timer(ev);
-
- if (ev->delayed) {
- ev->delayed = 0;
- if (ev->ready == 0) {
- continue;
- }
-
- } else {
- ev->timedout = 1;
- }
-
- ev->event_handler(ev);
- }
-
- ngx_timer_delta[i] = 0;
- }
-
-#if 0
- ngx_expire_timers = 0;
-
- if (ngx_temp_timer_queue.timer_next == &ngx_temp_timer_queue) {
- return;
- }
-
- timer = 0;
-
- while (ngx_temp_timer_queue.timer_next != &ngx_temp_timer_queue) {
- timer += ngx_temp_timer_queue.timer_next->timer_delta;
- ev = ngx_temp_timer_queue.timer_next;
-
-#if (NGX_DEBUG_EVENT)
- ngx_log_debug(ev->log, "process temp timer queue");
-#endif
-
- ngx_del_timer(ev);
- ngx_add_timer(ev, timer);
- }
-#endif
-}
-
-
-#endif
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index 21867ce..51e3229 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -8,7 +8,7 @@
/*
- * 32 bit key value resolution
+ * 32 bit timer key value resolution
*
* 1 msec - 49 days
* 10 msec - 1 years 4 months
@@ -28,15 +28,6 @@
ngx_msec_t ngx_event_find_timer(void);
void ngx_event_expire_timers(ngx_msec_t timer);
-#if 0
-int ngx_event_timer_init(ngx_cycle_t *cycle);
-void ngx_event_timer_done(ngx_cycle_t *cycle);
-void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer);
-int ngx_event_find_timer(void);
-void ngx_event_set_timer_delta(ngx_msec_t timer);
-void ngx_event_expire_timers(ngx_msec_t timer);
-#endif
-
extern ngx_rbtree_t *ngx_event_timer_rbtree;
extern ngx_rbtree_t ngx_event_timer_sentinel;
@@ -59,7 +50,11 @@
}
ev->rbtree_key = (ngx_int_t)
+ (ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION
+ + timer) / NGX_TIMER_RESOLUTION;
+#if 0
(ngx_elapsed_msec + timer) / NGX_TIMER_RESOLUTION;
+#endif
ngx_rbtree_insert(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
(ngx_rbtree_t *) &ev->rbtree_key);
@@ -68,38 +63,4 @@
}
-#if 0
-
-ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
-{
-#if (NGX_DEBUG_EVENT)
- ngx_connection_t *c = ev->data;
- ngx_log_debug(ev->log, "del timer: %d:%d" _ c->fd _ ev->write);
-#endif
-
- if (!ev->timer_next || !ev->timer_prev) {
- ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already deleted");
- return;
- }
-
- if (ev->timer_prev) {
- ev->timer_prev->timer_next = ev->timer_next;
- }
-
- if (ev->timer_next) {
- ev->timer_next->timer_delta += ev->timer_delta;
- ev->timer_next->timer_prev = ev->timer_prev;
- ev->timer_next = NULL;
- }
-
- if (ev->timer_prev) {
- ev->timer_prev = NULL;
- }
-
- ev->timer_set = 0;
-}
-
-#endif
-
-
#endif /* _NGX_EVENT_TIMER_H_INCLUDED_ */