comparison src/event/modules/ngx_devpoll_module.c @ 1619:e2ab812358bd stable-0.5

r1355, r1471, r1600 merge: make 64-bit ngx_int_t on 64-bit platforms
author Igor Sysoev <igor@sysoev.ru>
date Wed, 07 Nov 2007 13:54:40 +0000
parents 43ea45d73093
children
comparison
equal deleted inserted replaced
1618:fbf94b8341bf 1619:e2ab812358bd
25 25
26 #endif 26 #endif
27 27
28 28
29 typedef struct { 29 typedef struct {
30 u_int changes; 30 ngx_uint_t changes;
31 u_int events; 31 ngx_uint_t events;
32 } ngx_devpoll_conf_t; 32 } ngx_devpoll_conf_t;
33 33
34 34
35 static ngx_int_t ngx_devpoll_init(ngx_cycle_t *cycle, ngx_msec_t timer); 35 static ngx_int_t ngx_devpoll_init(ngx_cycle_t *cycle, ngx_msec_t timer);
36 static void ngx_devpoll_done(ngx_cycle_t *cycle); 36 static void ngx_devpoll_done(ngx_cycle_t *cycle);
37 static ngx_int_t ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags); 37 static ngx_int_t ngx_devpoll_add_event(ngx_event_t *ev, ngx_int_t event,
38 static ngx_int_t ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags); 38 ngx_uint_t flags);
39 static ngx_int_t ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags); 39 static ngx_int_t ngx_devpoll_del_event(ngx_event_t *ev, ngx_int_t event,
40 ngx_uint_t flags);
41 static ngx_int_t ngx_devpoll_set_event(ngx_event_t *ev, ngx_int_t event,
42 ngx_uint_t flags);
40 static ngx_int_t ngx_devpoll_process_events(ngx_cycle_t *cycle, 43 static ngx_int_t ngx_devpoll_process_events(ngx_cycle_t *cycle,
41 ngx_msec_t timer, ngx_uint_t flags); 44 ngx_msec_t timer, ngx_uint_t flags);
42 45
43 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle); 46 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle);
44 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf); 47 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf);
45 48
46 static int dp = -1; 49 static int dp = -1;
47 static struct pollfd *change_list, *event_list; 50 static struct pollfd *change_list, *event_list;
48 static u_int nchanges, max_changes, nevents; 51 static ngx_uint_t nchanges, max_changes, nevents;
49 52
50 static ngx_event_t **change_index; 53 static ngx_event_t **change_index;
51 54
52 55
53 static ngx_str_t devpoll_name = ngx_string("/dev/poll"); 56 static ngx_str_t devpoll_name = ngx_string("/dev/poll");
207 nevents = 0; 210 nevents = 0;
208 } 211 }
209 212
210 213
211 static ngx_int_t 214 static ngx_int_t
212 ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags) 215 ngx_devpoll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
213 { 216 {
214 #if (NGX_DEBUG) 217 #if (NGX_DEBUG)
215 ngx_connection_t *c; 218 ngx_connection_t *c;
216 #endif 219 #endif
217 220
220 #endif 223 #endif
221 224
222 #if (NGX_DEBUG) 225 #if (NGX_DEBUG)
223 c = ev->data; 226 c = ev->data;
224 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, 227 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
225 "devpoll add event: fd:%d ev:%04Xd", c->fd, event); 228 "devpoll add event: fd:%d ev:%04Xi", c->fd, event);
226 #endif 229 #endif
227 230
228 ev->active = 1; 231 ev->active = 1;
229 232
230 return ngx_devpoll_set_event(ev, event, 0); 233 return ngx_devpoll_set_event(ev, event, 0);
231 } 234 }
232 235
233 236
234 static ngx_int_t 237 static ngx_int_t
235 ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags) 238 ngx_devpoll_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
236 { 239 {
237 ngx_event_t *e; 240 ngx_event_t *e;
238 ngx_connection_t *c; 241 ngx_connection_t *c;
239 242
240 c = ev->data; 243 c = ev->data;
242 #if (NGX_READ_EVENT != POLLIN) 245 #if (NGX_READ_EVENT != POLLIN)
243 event = (event == NGX_READ_EVENT) ? POLLIN : POLLOUT; 246 event = (event == NGX_READ_EVENT) ? POLLIN : POLLOUT;
244 #endif 247 #endif
245 248
246 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, 249 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
247 "devpoll del event: fd:%d ev:%04Xd", c->fd, event); 250 "devpoll del event: fd:%d ev:%04Xi", c->fd, event);
248 251
249 if (ngx_devpoll_set_event(ev, POLLREMOVE, flags) == NGX_ERROR) { 252 if (ngx_devpoll_set_event(ev, POLLREMOVE, flags) == NGX_ERROR) {
250 return NGX_ERROR; 253 return NGX_ERROR;
251 } 254 }
252 255
280 return NGX_OK; 283 return NGX_OK;
281 } 284 }
282 285
283 286
284 static ngx_int_t 287 static ngx_int_t
285 ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags) 288 ngx_devpoll_set_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
286 { 289 {
287 size_t n; 290 size_t n;
288 ngx_connection_t *c; 291 ngx_connection_t *c;
289 292
290 c = ev->data; 293 c = ev->data;
291 294
292 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0, 295 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
293 "devpoll fd:%d ev:%04Xd fl:%04Xd", c->fd, event, flags); 296 "devpoll fd:%d ev:%04Xi fl:%04Xi", c->fd, event, flags);
294 297
295 if (nchanges >= max_changes) { 298 if (nchanges >= max_changes) {
296 ngx_log_error(NGX_LOG_WARN, ev->log, 0, 299 ngx_log_error(NGX_LOG_WARN, ev->log, 0,
297 "/dev/pool change list is filled up"); 300 "/dev/pool change list is filled up");
298 301
305 308
306 nchanges = 0; 309 nchanges = 0;
307 } 310 }
308 311
309 change_list[nchanges].fd = c->fd; 312 change_list[nchanges].fd = c->fd;
310 change_list[nchanges].events = event; 313 change_list[nchanges].events = (short) event;
311 change_list[nchanges].revents = 0; 314 change_list[nchanges].revents = 0;
312 315
313 change_index[nchanges] = ev; 316 change_index[nchanges] = ev;
314 ev->index = nchanges; 317 ev->index = nchanges;
315 318
360 363
361 nchanges = 0; 364 nchanges = 0;
362 } 365 }
363 366
364 dvp.dp_fds = event_list; 367 dvp.dp_fds = event_list;
365 dvp.dp_nfds = nevents; 368 dvp.dp_nfds = (int) nevents;
366 dvp.dp_timeout = timer; 369 dvp.dp_timeout = timer;
367 events = ioctl(dp, DP_POLL, &dvp); 370 events = ioctl(dp, DP_POLL, &dvp);
368 371
369 if (events == -1) { 372 if (events == -1) {
370 err = ngx_errno; 373 err = ngx_errno;