Mercurial > hg > nginx
comparison src/event/modules/ngx_kqueue_module.c @ 36:c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 23 Dec 2002 06:29:22 +0000 |
parents | d45effe5854c |
children | 2ffaa35fba42 |
comparison
equal
deleted
inserted
replaced
35:79c1fce18e71 | 36:c14d7232b11f |
---|---|
59 | 59 |
60 int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) | 60 int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) |
61 { | 61 { |
62 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1: 0; | 62 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1: 0; |
63 | 63 |
64 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); | 64 #if 1 |
65 } | 65 if (nchanges > 0 |
66 | 66 && ev->index < nchanges |
67 | |
68 int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags) | |
69 { | |
70 ngx_event_t *e; | |
71 | |
72 if (nchanges > 0 && ev->index < nchanges | |
73 && change_list[ev->index].udata == ev) | 67 && change_list[ev->index].udata == ev) |
74 { | 68 { |
75 ngx_connection_t *cn = (ngx_connection_t *) ev->data; | 69 /* DEBUG */ |
76 ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _ | 70 ngx_connection_t *c = (ngx_connection_t *) ev->data; |
77 cn->fd _ event); | 71 ngx_log_debug(ev->log, "kqueue add event: %d: ft:%d" _ c->fd _ event); |
72 | |
73 change_list[ev->index].filter = event; | |
74 change_list[ev->index].flags = flags; | |
75 | |
76 return NGX_OK; | |
77 } | |
78 #endif | |
79 | |
80 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); | |
81 } | |
82 | |
83 | |
84 int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags) | |
85 { | |
86 ngx_event_t *e; | |
87 | |
88 if (nchanges > 0 | |
89 && ev->index < nchanges | |
90 && change_list[ev->index].udata == ev) | |
91 { | |
92 /* DEBUG */ | |
93 ngx_connection_t *c = (ngx_connection_t *) ev->data; | |
94 ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _ c->fd _ event); | |
78 | 95 |
79 if (ev->index < --nchanges) { | 96 if (ev->index < --nchanges) { |
80 e = (ngx_event_t *) change_list[nchanges].udata; | 97 e = (ngx_event_t *) change_list[nchanges].udata; |
81 change_list[ev->index] = change_list[nchanges]; | 98 change_list[ev->index] = change_list[nchanges]; |
82 e->index = ev->index; | 99 e->index = ev->index; |
93 | 110 |
94 | 111 |
95 int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) | 112 int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) |
96 { | 113 { |
97 struct timespec ts; | 114 struct timespec ts; |
98 ngx_connection_t *cn; | 115 ngx_connection_t *c; |
99 | 116 |
100 cn = (ngx_connection_t *) ev->data; | 117 c = (ngx_connection_t *) ev->data; |
101 | 118 |
102 ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d f:%08x" _ | 119 ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d f:%08x" _ |
103 cn->fd _ filter _ flags); | 120 c->fd _ filter _ flags); |
104 | 121 |
105 if (nchanges >= nevents) { | 122 if (nchanges >= nevents) { |
106 ngx_log_error(NGX_LOG_WARN, ev->log, 0, | 123 ngx_log_error(NGX_LOG_WARN, ev->log, 0, |
107 "kqueue change list is filled up"); | 124 "kqueue change list is filled up"); |
108 | 125 |
114 return NGX_ERROR; | 131 return NGX_ERROR; |
115 } | 132 } |
116 nchanges = 0; | 133 nchanges = 0; |
117 } | 134 } |
118 | 135 |
119 change_list[nchanges].ident = cn->fd; | 136 change_list[nchanges].ident = c->fd; |
120 change_list[nchanges].filter = filter; | 137 change_list[nchanges].filter = filter; |
121 change_list[nchanges].flags = flags; | 138 change_list[nchanges].flags = flags; |
122 change_list[nchanges].fflags = 0; | 139 change_list[nchanges].fflags = 0; |
123 change_list[nchanges].data = 0; | 140 change_list[nchanges].data = 0; |
124 change_list[nchanges].udata = ev; | 141 change_list[nchanges].udata = ev; |
125 | 142 |
143 #if 0 | |
126 if (flags == EV_ADD) | 144 if (flags == EV_ADD) |
145 #endif | |
127 ev->index = nchanges; | 146 ev->index = nchanges; |
128 | 147 |
129 nchanges++; | 148 nchanges++; |
130 | 149 |
131 return NGX_OK; | 150 return NGX_OK; |
137 int events, i; | 156 int events, i; |
138 u_int timer, delta; | 157 u_int timer, delta; |
139 ngx_event_t *ev; | 158 ngx_event_t *ev; |
140 struct timeval tv; | 159 struct timeval tv; |
141 struct timespec ts, *tp; | 160 struct timespec ts, *tp; |
142 | |
143 timer = 0; | |
144 delta = 0; | |
145 tp = NULL; | |
146 | 161 |
147 if (timer_queue.timer_next != &timer_queue) { | 162 if (timer_queue.timer_next != &timer_queue) { |
148 timer = timer_queue.timer_next->timer_delta; | 163 timer = timer_queue.timer_next->timer_delta; |
149 ts.tv_sec = timer / 1000; | 164 ts.tv_sec = timer / 1000; |
150 ts.tv_nsec = (timer % 1000) * 1000000; | 165 ts.tv_nsec = (timer % 1000) * 1000000; |
151 tp = &ts; | 166 tp = &ts; |
152 gettimeofday(&tv, NULL); | 167 gettimeofday(&tv, NULL); |
153 delta = tv.tv_sec * 1000 + tv.tv_usec / 1000; | 168 delta = tv.tv_sec * 1000 + tv.tv_usec / 1000; |
169 | |
170 } else { | |
171 timer = 0; | |
172 delta = 0; | |
173 tp = NULL; | |
154 } | 174 } |
155 | 175 |
156 ngx_log_debug(log, "kevent timer: %d" _ timer); | 176 ngx_log_debug(log, "kevent timer: %d" _ timer); |
157 | 177 |
158 events = kevent(kq, change_list, nchanges, event_list, nevents, tp); | 178 events = kevent(kq, change_list, nchanges, event_list, nevents, tp); |