diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2004-02-25 20:16:15 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2004-02-25 20:16:15 +0000 |
| commit | f2334416e7485ff1c260a46ba47aeadffeff923a (patch) | |
| tree | d4d562a3c0c4af27ed23e9602cad653f1d4fec00 /src/event/ngx_event_timer.h | |
| parent | 14dab4563898155799a06007fff9c30c4dac8b26 (diff) | |
| download | nginx-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.h | 29 |
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; } |
