summaryrefslogtreecommitdiffhomepage
path: root/src/event/ngx_event_timer.h
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-02-25 20:16:15 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-02-25 20:16:15 +0000
commitf2334416e7485ff1c260a46ba47aeadffeff923a (patch)
treed4d562a3c0c4af27ed23e9602cad653f1d4fec00 /src/event/ngx_event_timer.h
parent14dab4563898155799a06007fff9c30c4dac8b26 (diff)
downloadnginx-f2334416e7485ff1c260a46ba47aeadffeff923a.tar.gz
nginx-f2334416e7485ff1c260a46ba47aeadffeff923a.tar.bz2
nginx-0.0.2-2004-02-25-23:16:15 import
Diffstat (limited to 'src/event/ngx_event_timer.h')
-rw-r--r--src/event/ngx_event_timer.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index ee920dc4e..300d79cb7 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -7,6 +7,8 @@
#include <ngx_event.h>
+#define NGX_TIMER_ERROR (ngx_msec_t) -1
+
/*
* 32 bit timer key value resolution
*
@@ -19,11 +21,16 @@
#define NGX_TIMER_RESOLUTION 1
-void ngx_event_timer_init(void);
+ngx_int_t ngx_event_timer_init(ngx_log_t *log);
ngx_msec_t ngx_event_find_timer(void);
void ngx_event_expire_timers(ngx_msec_t timer);
+#if (NGX_THREADS)
+extern ngx_mutex_t *ngx_event_timer_mutex;
+#endif
+
+
extern ngx_rbtree_t *ngx_event_timer_rbtree;
extern ngx_rbtree_t ngx_event_timer_sentinel;
@@ -34,9 +41,19 @@ ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
"event timer del: %d: %d",
ngx_event_ident(ev->data), ev->rbtree_key);
+#if (NGX_THREADS)
+ if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+ return;
+ }
+#endif
+
ngx_rbtree_delete(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
(ngx_rbtree_t *) &ev->rbtree_key);
+#if (NGX_THREADS)
+ ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
#if (NGX_DEBUG)
ev->rbtree_left = NULL;
ev->rbtree_right = NULL;
@@ -64,9 +81,19 @@ ngx_inline static void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
"event timer add: %d: %d",
ngx_event_ident(ev->data), ev->rbtree_key);
+#if (NGX_THREADS)
+ if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+ return;
+ }
+#endif
+
ngx_rbtree_insert(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
(ngx_rbtree_t *) &ev->rbtree_key);
+#if (NGX_THREADS)
+ ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
ev->timer_set = 1;
}