Mercurial > hg > nginx
comparison src/event/modules/ngx_devpoll_module.c @ 116:571bcbff82c5
nginx-0.0.1-2003-07-11-08:50:59 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 11 Jul 2003 04:50:59 +0000 |
parents | be27f922b9a2 |
children | cd54bcbaf3b5 |
comparison
equal
deleted
inserted
replaced
115:be27f922b9a2 | 116:571bcbff82c5 |
---|---|
24 | 24 |
25 #endif | 25 #endif |
26 | 26 |
27 | 27 |
28 typedef struct { | 28 typedef struct { |
29 int changes; | 29 u_int changes; |
30 int events; | 30 u_int events; |
31 } ngx_devpoll_conf_t; | 31 } ngx_devpoll_conf_t; |
32 | 32 |
33 | 33 |
34 static int ngx_devpoll_init(ngx_cycle_t *cycle); | 34 static int ngx_devpoll_init(ngx_cycle_t *cycle); |
35 static void ngx_devpoll_done(ngx_cycle_t *cycle); | 35 static void ngx_devpoll_done(ngx_cycle_t *cycle); |
41 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle); | 41 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle); |
42 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf); | 42 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf); |
43 | 43 |
44 static int dp; | 44 static int dp; |
45 static struct pollfd *change_list, *event_list; | 45 static struct pollfd *change_list, *event_list; |
46 static u_int nchanges, max_changes; | 46 static u_int nchanges, max_changes, nevents; |
47 static int nevents; | |
48 | 47 |
49 static ngx_event_t **change_index; | 48 static ngx_event_t **change_index; |
50 | 49 |
51 | 50 |
52 static ngx_str_t devpoll_name = ngx_string("/dev/poll"); | 51 static ngx_str_t devpoll_name = ngx_string("/dev/poll"); |
93 ngx_module_t ngx_devpoll_module = { | 92 ngx_module_t ngx_devpoll_module = { |
94 NGX_MODULE, | 93 NGX_MODULE, |
95 &ngx_devpoll_module_ctx, /* module context */ | 94 &ngx_devpoll_module_ctx, /* module context */ |
96 ngx_devpoll_commands, /* module directives */ | 95 ngx_devpoll_commands, /* module directives */ |
97 NGX_EVENT_MODULE, /* module type */ | 96 NGX_EVENT_MODULE, /* module type */ |
98 NULL /* init module */ | 97 NULL, /* init module */ |
98 NULL /* init child */ | |
99 }; | 99 }; |
100 | 100 |
101 | 101 |
102 static int ngx_devpoll_init(ngx_cycle_t *cycle) | 102 static int ngx_devpoll_init(ngx_cycle_t *cycle) |
103 { | 103 { |
319 } | 319 } |
320 | 320 |
321 | 321 |
322 int ngx_devpoll_process_events(ngx_log_t *log) | 322 int ngx_devpoll_process_events(ngx_log_t *log) |
323 { | 323 { |
324 int events, n, i; | 324 int events, n, i, j; |
325 ngx_msec_t timer, delta; | 325 ngx_msec_t timer, delta; |
326 ngx_err_t err; | 326 ngx_err_t err; |
327 ngx_cycle_t **cycle; | 327 ngx_cycle_t **cycle; |
328 ngx_connection_t *c; | 328 ngx_connection_t *c; |
329 struct dvpoll dvp; | 329 struct dvpoll dvp; |
395 for (i = 0; i < events; i++) { | 395 for (i = 0; i < events; i++) { |
396 c = &ngx_cycle->connections[event_list[i].fd]; | 396 c = &ngx_cycle->connections[event_list[i].fd]; |
397 | 397 |
398 if (c->fd == -1) { | 398 if (c->fd == -1) { |
399 cycle = ngx_old_cycles.elts; | 399 cycle = ngx_old_cycles.elts; |
400 for (i = 0; i < ngx_old_cycles.nelts; i++) { | 400 for (j = 0; j < ngx_old_cycles.nelts; j++) { |
401 if (cycle[i] == NULL) { | 401 if (cycle[i] == NULL) { |
402 continue; | 402 continue; |
403 } | 403 } |
404 c = &cycle[i]->connections[event_list[i].fd]; | 404 c = &cycle[j]->connections[event_list[i].fd]; |
405 if (c->fd != -1) { | 405 if (c->fd != -1) { |
406 break; | 406 break; |
407 } | 407 } |
408 } | 408 } |
409 } | 409 } |
469 | 469 |
470 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf) | 470 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf) |
471 { | 471 { |
472 ngx_devpoll_conf_t *dpcf = conf; | 472 ngx_devpoll_conf_t *dpcf = conf; |
473 | 473 |
474 ngx_conf_init_value(dpcf->changes, 512); | 474 ngx_conf_init_unsigned_value(dpcf->changes, 512); |
475 ngx_conf_init_value(dpcf->events, 512); | 475 ngx_conf_init_unsigned_value(dpcf->events, 512); |
476 | 476 |
477 return NGX_CONF_OK; | 477 return NGX_CONF_OK; |
478 } | 478 } |