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;