Mercurial > hg > nginx
comparison src/event/modules/ngx_kqueue_module.c @ 6:669801705ab1
nginx-0.0.1-2002-08-26-19:18:19 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 26 Aug 2002 15:18:19 +0000 |
parents | 4eff17414a43 |
children | b5481d6fbbd4 |
comparison
equal
deleted
inserted
replaced
5:62b1a364857c | 6:669801705ab1 |
---|---|
16 | 16 |
17 #if (USE_KQUEUE) && !(HAVE_KQUEUE) | 17 #if (USE_KQUEUE) && !(HAVE_KQUEUE) |
18 #error "kqueue is not supported on this platform" | 18 #error "kqueue is not supported on this platform" |
19 #endif | 19 #endif |
20 | 20 |
21 static void ngx_add_timer(ngx_event_t *ev, u_int timer); | 21 static void ngx_add_timer_core(ngx_event_t *ev, u_int timer); |
22 static void ngx_inline ngx_del_timer(ngx_event_t *ev); | 22 static void ngx_inline ngx_del_timer(ngx_event_t *ev); |
23 | 23 |
24 | 24 |
25 static int kq; | 25 static int kq; |
26 static struct kevent *change_list, *event_list; | 26 static struct kevent *change_list, *event_list; |
33 int size = sizeof(struct kevent) * 512; | 33 int size = sizeof(struct kevent) * 512; |
34 | 34 |
35 nchanges = 0; | 35 nchanges = 0; |
36 nevents = 512; | 36 nevents = 512; |
37 | 37 |
38 if ((kq = kqueue()) == -1) | 38 if ((kq = kqueue()) == -1) { |
39 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, | 39 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, |
40 "ngx_kqueue_init: kqueue failed"); | 40 "kqueue() failed"); |
41 exit(1); | |
42 } | |
41 | 43 |
42 change_list = ngx_alloc(size, log); | 44 change_list = ngx_alloc(size, log); |
43 event_list = ngx_alloc(size, log); | 45 event_list = ngx_alloc(size, log); |
44 | 46 |
45 timer_queue.timer_prev = &timer_queue; | 47 timer_queue.timer_prev = &timer_queue; |
54 } | 56 } |
55 | 57 |
56 int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) | 58 int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) |
57 { | 59 { |
58 if (event == NGX_TIMER_EVENT) { | 60 if (event == NGX_TIMER_EVENT) { |
59 ngx_add_timer(ev, flags); | 61 ngx_add_timer_core(ev, flags); |
60 return 0; | 62 return 0; |
61 } | 63 } |
62 | 64 |
63 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); | 65 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); |
64 } | 66 } |
152 /* void */) | 154 /* void */) |
153 { | 155 { |
154 delta -= ev->timer_delta; | 156 delta -= ev->timer_delta; |
155 nx = ev->timer_next; | 157 nx = ev->timer_next; |
156 ngx_del_timer(ev); | 158 ngx_del_timer(ev); |
159 #if 1 | |
160 ev->timedout = 1; | |
161 if (ev->event_handler(ev) == -1) | |
162 ev->close_handler(ev); | |
163 #else | |
157 if (ev->timer_handler(ev) == -1) | 164 if (ev->timer_handler(ev) == -1) |
158 ev->close_handler(ev); | 165 ev->close_handler(ev); |
166 #endif | |
159 ev = nx; | 167 ev = nx; |
160 } | 168 } |
161 | 169 |
162 } else { | 170 } else { |
163 timer_queue.timer_next->timer_delta -= delta; | 171 timer_queue.timer_next->timer_delta -= delta; |
205 } | 213 } |
206 | 214 |
207 return 0; | 215 return 0; |
208 } | 216 } |
209 | 217 |
210 static void ngx_add_timer(ngx_event_t *ev, u_int timer) | 218 static void ngx_add_timer_core(ngx_event_t *ev, u_int timer) |
211 { | 219 { |
212 ngx_event_t *e; | 220 ngx_event_t *e; |
213 | 221 |
214 for (e = timer_queue.timer_next; | 222 for (e = timer_queue.timer_next; |
215 e != &timer_queue && timer > e->timer_delta; | 223 e != &timer_queue && timer > e->timer_delta; |