Mercurial > hg > nginx
comparison src/event/modules/ngx_kqueue_module.c @ 18:72ad26c77d2d
nginx-0.0.1-2002-10-04-21:58:04 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 04 Oct 2002 17:58:04 +0000 |
parents | 8dd06e2844f5 |
children | 53cb81681040 |
comparison
equal
deleted
inserted
replaced
17:8dd06e2844f5 | 18:72ad26c77d2d |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2002 Igor Sysoev, http://sysoev.ru | 2 * Copyright (C) 2002 Igor Sysoev, http://sysoev.ru |
3 */ | 3 */ |
4 | 4 |
5 /* | |
6 NEED ? : unify change_list and event_list: | |
7 event_list = change_list; | |
8 */ | |
9 | 5 |
10 #include <ngx_config.h> | 6 #include <ngx_config.h> |
11 #include <ngx_core.h> | 7 #include <ngx_core.h> |
12 #include <ngx_types.h> | 8 #include <ngx_types.h> |
13 #include <ngx_log.h> | 9 #include <ngx_log.h> |
64 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); | 60 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); |
65 } | 61 } |
66 | 62 |
67 int ngx_kqueue_del_event(ngx_event_t *ev, int event) | 63 int ngx_kqueue_del_event(ngx_event_t *ev, int event) |
68 { | 64 { |
65 ngx_event_t *e; | |
66 | |
67 if (ev->index <= nchanges && change_list[ev->index].udata == ev) { | |
68 change_list[ev->index] = change_list[nchanges]; | |
69 e = (ngx_event_t *) change_list[ev->index].udata; | |
70 e->index = ev->index; | |
71 nchanges--; | |
72 | |
73 return NGX_OK; | |
74 } | |
75 | |
69 return ngx_kqueue_set_event(ev, event, EV_DELETE); | 76 return ngx_kqueue_set_event(ev, event, EV_DELETE); |
70 } | 77 } |
71 | 78 |
72 int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) | 79 int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) |
73 { | 80 { |
92 change_list[nchanges].filter = filter; | 99 change_list[nchanges].filter = filter; |
93 change_list[nchanges].flags = flags; | 100 change_list[nchanges].flags = flags; |
94 change_list[nchanges].fflags = 0; | 101 change_list[nchanges].fflags = 0; |
95 change_list[nchanges].data = 0; | 102 change_list[nchanges].data = 0; |
96 change_list[nchanges].udata = ev; | 103 change_list[nchanges].udata = ev; |
104 | |
105 if (flags == EV_ADD) | |
106 ev->index = nchanges; | |
107 | |
97 nchanges++; | 108 nchanges++; |
98 | 109 |
99 return NGX_OK; | 110 return NGX_OK; |
100 } | 111 } |
101 | 112 |