diff options
Diffstat (limited to 'src/event/modules')
| -rw-r--r-- | src/event/modules/ngx_aio_module.c | 11 | ||||
| -rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 18 | ||||
| -rw-r--r-- | src/event/modules/ngx_select_module.c | 30 |
3 files changed, 41 insertions, 18 deletions
diff --git a/src/event/modules/ngx_aio_module.c b/src/event/modules/ngx_aio_module.c index 38bf7c057..b18d4928a 100644 --- a/src/event/modules/ngx_aio_module.c +++ b/src/event/modules/ngx_aio_module.c @@ -1,4 +1,14 @@ +/* 1 */ +int ngx_posix_aio_process_events(ngx_log_t *log) +{ + listen via SIGIO; + aio_* via SIGxxx; + + sigsuspend()/sigwaitinfo()/sigtimedwait(); +} + +/* 2 */ int ngx_posix_aio_process_events(ngx_log_t *log) { unmask signal @@ -18,6 +28,7 @@ int ngx_posix_aio_process_events(ngx_log_t *log) aio } +/* 3 */ int ngx_posix_aio_process_events(ngx_log_t *log) { unmask signal diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index 54e9474ab..f7dee180e 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -18,7 +18,7 @@ #error "kqueue is not supported on this platform" #endif -static void ngx_add_timer(ngx_event_t *ev, u_int timer); +static void ngx_add_timer_core(ngx_event_t *ev, u_int timer); static void ngx_inline ngx_del_timer(ngx_event_t *ev); @@ -35,9 +35,11 @@ void ngx_kqueue_init(int max_connections, ngx_log_t *log) nchanges = 0; nevents = 512; - if ((kq = kqueue()) == -1) + if ((kq = kqueue()) == -1) { ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, - "ngx_kqueue_init: kqueue failed"); + "kqueue() failed"); + exit(1); + } change_list = ngx_alloc(size, log); event_list = ngx_alloc(size, log); @@ -56,7 +58,7 @@ void ngx_kqueue_init(int max_connections, ngx_log_t *log) int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) { if (event == NGX_TIMER_EVENT) { - ngx_add_timer(ev, flags); + ngx_add_timer_core(ev, flags); return 0; } @@ -154,8 +156,14 @@ int ngx_kqueue_process_events(ngx_log_t *log) delta -= ev->timer_delta; nx = ev->timer_next; ngx_del_timer(ev); +#if 1 + ev->timedout = 1; + if (ev->event_handler(ev) == -1) + ev->close_handler(ev); +#else if (ev->timer_handler(ev) == -1) ev->close_handler(ev); +#endif ev = nx; } @@ -207,7 +215,7 @@ int ngx_kqueue_process_events(ngx_log_t *log) return 0; } -static void ngx_add_timer(ngx_event_t *ev, u_int timer) +static void ngx_add_timer_core(ngx_event_t *ev, u_int timer) { ngx_event_t *e; diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c index 6c9e8f3c2..bde14a1e4 100644 --- a/src/event/modules/ngx_select_module.c +++ b/src/event/modules/ngx_select_module.c @@ -23,7 +23,7 @@ static ngx_event_t event_queue; static ngx_event_t timer_queue; -static void ngx_add_timer(ngx_event_t *ev, u_int timer); +static void ngx_add_timer_core(ngx_event_t *ev, u_int timer); static void ngx_inline ngx_del_timer(ngx_event_t *ev); static fd_set *ngx_select_get_fd_set(ngx_socket_t fd, int event, @@ -31,19 +31,17 @@ static fd_set *ngx_select_get_fd_set(ngx_socket_t fd, int event, void ngx_select_init(int max_connections, ngx_log_t *log) { -#if (WIN32) - if (max_connections > FD_SETSIZE) + if (max_connections > FD_SETSIZE) { ngx_log_error(NGX_LOG_EMERG, log, 0, - "ngx_select_init: maximum number of descriptors " - "supported by select() is %d", - FD_SETSIZE); +#if (WIN32) + "maximum number of descriptors " + "supported by select() is %d", FD_SETSIZE); #else - if (max_connections >= FD_SETSIZE) - ngx_log_error(NGX_LOG_EMERG, log, 0, - "ngx_select_init: maximum descriptor number" - "supported by select() is %d", - FD_SETSIZE - 1); + "maximum descriptor number" + "supported by select() is %d", FD_SETSIZE - 1); #endif + exit(1); + } FD_ZERO(&master_read_fds); FD_ZERO(&master_write_fds); @@ -71,7 +69,7 @@ int ngx_select_add_event(ngx_event_t *ev, int event, u_int flags) ngx_connection_t *cn = (ngx_connection_t *) ev->data; if (event == NGX_TIMER_EVENT) { - ngx_add_timer(ev, flags); + ngx_add_timer_core(ev, flags); return 0; } @@ -271,8 +269,14 @@ int ngx_select_process_events(ngx_log_t *log) delta -= ev->timer_delta; nx = ev->timer_next; ngx_del_timer(ev); +#if 1 + ev->timedout = 1; + if (ev->event_handler(ev) == -1) + ev->close_handler(ev); +#else if (ev->timer_handler(ev) == -1) ev->close_handler(ev); +#endif ev = nx; } @@ -316,7 +320,7 @@ int ngx_select_process_events(ngx_log_t *log) return 0; } -static void ngx_add_timer(ngx_event_t *ev, u_int timer) +static void ngx_add_timer_core(ngx_event_t *ev, u_int timer) { ngx_event_t *e; |
