comparison src/event/modules/ngx_kqueue_module.c @ 7:b5481d6fbbd4

nginx-0.0.1-2002-08-29-20:59:54 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 29 Aug 2002 16:59:54 +0000
parents 669801705ab1
children 708f8bb772ec
comparison
equal deleted inserted replaced
6:669801705ab1 7:b5481d6fbbd4
6 NEED ? : unify change_list and event_list: 6 NEED ? : unify change_list and event_list:
7 event_list = change_list; 7 event_list = change_list;
8 */ 8 */
9 9
10 #include <ngx_config.h> 10 #include <ngx_config.h>
11 #include <ngx_core.h>
11 #include <ngx_types.h> 12 #include <ngx_types.h>
12 #include <ngx_log.h> 13 #include <ngx_log.h>
13 #include <ngx_connection.h> 14 #include <ngx_connection.h>
14 #include <ngx_event.h> 15 #include <ngx_event.h>
15 #include <ngx_kqueue_module.h> 16 #include <ngx_kqueue_module.h>
17 #if (USE_KQUEUE) && !(HAVE_KQUEUE) 18 #if (USE_KQUEUE) && !(HAVE_KQUEUE)
18 #error "kqueue is not supported on this platform" 19 #error "kqueue is not supported on this platform"
19 #endif 20 #endif
20 21
21 static void ngx_add_timer_core(ngx_event_t *ev, u_int timer); 22 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);
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;
27 static int nchanges, nevents; 27 static int nchanges, nevents;
143 "ngx_kqueue_process_events: " 143 "ngx_kqueue_process_events: "
144 "kevent returns no events without timeout"); 144 "kevent returns no events without timeout");
145 } 145 }
146 146
147 ngx_log_debug(log, "ngx_kqueue_process_events: " 147 ngx_log_debug(log, "ngx_kqueue_process_events: "
148 "timer: %d, delta: %d" _ timer _ delta); 148 "timer: %d, delta: %d" _ timer _ delta);
149 149
150 if (timer) { 150 if (timer) {
151 if (delta >= timer) { 151 if (delta >= timer) {
152 for (ev = timer_queue.timer_next; 152 for (ev = timer_queue.timer_next;
153 ev != &timer_queue && delta >= ev->timer_delta; 153 ev != &timer_queue && delta >= ev->timer_delta;
156 delta -= ev->timer_delta; 156 delta -= ev->timer_delta;
157 nx = ev->timer_next; 157 nx = ev->timer_next;
158 ngx_del_timer(ev); 158 ngx_del_timer(ev);
159 #if 1 159 #if 1
160 ev->timedout = 1; 160 ev->timedout = 1;
161 if (ev->event_handler(ev) == -1) 161 if (ev->event_handler(ev) == NGX_ERROR)
162 ev->close_handler(ev); 162 ev->close_handler(ev);
163 #else 163 #else
164 if (ev->timer_handler(ev) == -1) 164 if (ev->timer_handler(ev) == -1)
165 ev->close_handler(ev); 165 ev->close_handler(ev);
166 #endif 166 #endif
198 if (event_list[i].flags & EV_EOF) { 198 if (event_list[i].flags & EV_EOF) {
199 ev->eof = 1; 199 ev->eof = 1;
200 ev->error = event_list[i].fflags; 200 ev->error = event_list[i].fflags;
201 } 201 }
202 202
203 if (ev->event_handler(ev) == -1) 203 if (ev->event_handler(ev) == NGX_ERROR)
204 ev->close_handler(ev); 204 ev->close_handler(ev);
205 205
206 break; 206 break;
207 207
208 default: 208 default:
231 231
232 e->timer_prev->timer_next = ev; 232 e->timer_prev->timer_next = ev;
233 e->timer_prev = ev; 233 e->timer_prev = ev;
234 } 234 }
235 235
236 #if 0
236 static void ngx_inline ngx_del_timer(ngx_event_t *ev) 237 static void ngx_inline ngx_del_timer(ngx_event_t *ev)
237 { 238 {
238 if (ev->timer_prev) 239 if (ev->timer_prev)
239 ev->timer_prev->timer_next = ev->timer_next; 240 ev->timer_prev->timer_next = ev->timer_next;
240 241
241 if (ev->timer_next) { 242 if (ev->timer_next) {
242 ev->timer_next->timer_prev = ev->timer_prev; 243 ev->timer_next->timer_prev = ev->timer_prev;
244 ev->timer_next = NULL;
245 }
246
247 if (ev->timer_prev)
243 ev->timer_prev = NULL; 248 ev->timer_prev = NULL;
244 } 249 }
245 250 #endif
246 if (ev->timer_prev)
247 ev->timer_next = NULL;
248 }