aboutsummaryrefslogtreecommitdiff
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/modules/ngx_devpoll_module.c26
-rw-r--r--src/event/modules/ngx_epoll_module.c24
-rw-r--r--src/event/modules/ngx_kqueue_module.c23
-rw-r--r--src/event/modules/ngx_poll_module.c22
-rw-r--r--src/event/modules/ngx_rtsig_module.c58
-rw-r--r--src/event/modules/ngx_select_module.c27
-rw-r--r--src/event/ngx_event.c15
7 files changed, 71 insertions, 124 deletions
diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c
index 54a595671..7238e5bcb 100644
--- a/src/event/modules/ngx_devpoll_module.c
+++ b/src/event/modules/ngx_devpoll_module.c
@@ -332,7 +332,6 @@ ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
ngx_err_t err;
ngx_int_t i;
ngx_uint_t level;
- ngx_msec_t delta;
ngx_event_t *rev, *wev, **queue;
ngx_connection_t *c;
struct dvpoll dvp;
@@ -349,6 +348,8 @@ ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
"write(/dev/poll) failed");
return NGX_ERROR;
}
+
+ nchanges = 0;
}
dvp.dp_fds = event_list;
@@ -362,10 +363,6 @@ ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
err = 0;
}
- nchanges = 0;
-
- delta = ngx_current_msec;
-
if (flags & NGX_UPDATE_TIME) {
ngx_time_update(0, 0);
}
@@ -388,21 +385,14 @@ ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
return NGX_ERROR;
}
- if (timer != NGX_TIMER_INFINITE) {
- delta = ngx_current_msec - delta;
-
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "devpoll timer: %M, delta: %M", timer, delta);
- } else {
- if (events == 0) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "ioctl(DP_POLL) returned no events without timeout");
- return NGX_ERROR;
+ if (events == 0) {
+ if (timer != NGX_TIMER_INFINITE) {
+ return NGX_OK;
}
- }
- if (events == 0) {
- return NGX_OK;
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "ioctl(DP_POLL) returned no events without timeout");
+ return NGX_ERROR;
}
ngx_mutex_lock(ngx_posted_events_mutex);
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index 14013dcd7..7364d7d00 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -391,7 +391,6 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
ngx_uint_t level;
ngx_err_t err;
ngx_log_t *log;
- ngx_msec_t delta;
ngx_event_t *rev, *wev, **queue;
ngx_connection_t *c;
@@ -408,25 +407,10 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
err = 0;
}
- delta = ngx_current_msec;
-
if (flags & NGX_UPDATE_TIME) {
ngx_time_update(0, 0);
}
- if (timer != NGX_TIMER_INFINITE) {
- delta = ngx_current_msec - delta;
-
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "epoll timer: %M, delta: %M", timer, delta);
- } else {
- if (events == 0) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "epoll_wait() returned no events without timeout");
- return NGX_ERROR;
- }
- }
-
if (err) {
if (err == NGX_EINTR) {
@@ -446,7 +430,13 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
}
if (events == 0) {
- return NGX_OK;
+ if (timer != NGX_TIMER_INFINITE) {
+ return NGX_OK;
+ }
+
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "epoll_wait() returned no events without timeout");
+ return NGX_ERROR;
}
ngx_mutex_lock(ngx_posted_events_mutex);
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index d4916792c..839afb575 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -473,7 +473,6 @@ ngx_kqueue_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
ngx_int_t i, instance;
ngx_uint_t level;
ngx_err_t err;
- ngx_msec_t delta;
ngx_event_t *ev, **queue;
struct timespec ts, *tp;
@@ -509,8 +508,6 @@ ngx_kqueue_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
err = 0;
}
- delta = ngx_current_msec;
-
if (flags & NGX_UPDATE_TIME) {
ngx_time_update(0, 0);
}
@@ -536,22 +533,14 @@ ngx_kqueue_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
return NGX_ERROR;
}
- if (timer != NGX_TIMER_INFINITE) {
- delta = ngx_current_msec - delta;
-
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "kevent timer: %M, delta: %M", timer, delta);
-
- } else {
- if (events == 0) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "kevent() returned no events without timeout");
- return NGX_ERROR;
+ if (events == 0) {
+ if (timer != NGX_TIMER_INFINITE) {
+ return NGX_OK;
}
- }
- if (events == 0) {
- return NGX_OK;
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "kevent() returned no events without timeout");
+ return NGX_ERROR;
}
ngx_mutex_lock(ngx_posted_events_mutex);
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index 61d617913..ffd6ace8a 100644
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -241,7 +241,6 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
ngx_err_t err;
ngx_int_t i, nready;
ngx_uint_t found, level;
- ngx_msec_t delta;
ngx_event_t *ev, **queue;
ngx_connection_t *c;
@@ -267,8 +266,6 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
err = 0;
}
- delta = ngx_current_msec;
-
if (flags & NGX_UPDATE_TIME) {
ngx_time_update(0, 0);
}
@@ -294,21 +291,14 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
return NGX_ERROR;
}
- if (timer != NGX_TIMER_INFINITE) {
- delta = ngx_current_msec - delta;
-
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "poll timer: %M, delta: %M", timer, delta);
- } else {
- if (ready == 0) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "poll() returned no events without timeout");
- return NGX_ERROR;
+ if (ready == 0) {
+ if (timer != NGX_TIMER_INFINITE) {
+ return NGX_OK;
}
- }
- if (ready == 0) {
- return NGX_OK;
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "poll() returned no events without timeout");
+ return NGX_ERROR;
}
ngx_mutex_lock(ngx_posted_events_mutex);
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 450943c2c..e57a5ddc9 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -286,7 +286,6 @@ ngx_rtsig_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
{
int signo;
ngx_int_t instance;
- ngx_msec_t delta;
ngx_err_t err;
siginfo_t si;
ngx_event_t *rev, *wev;
@@ -317,41 +316,34 @@ ngx_rtsig_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, err,
"rtsig signo:%d", signo);
+ if (flags & NGX_UPDATE_TIME) {
+ ngx_time_update(0, 0);
+ }
+
if (err == NGX_EAGAIN) {
- if (timer == NGX_TIMER_INFINITE) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
- "sigtimedwait() returned EAGAIN without timeout");
- return NGX_ERROR;
- }
+ /* timeout */
- err = 0;
+ if (timer != NGX_TIMER_INFINITE) {
+ return NGX_AGAIN;
+ }
+
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
+ "sigtimedwait() returned EAGAIN without timeout");
+ return NGX_ERROR;
}
- } else {
- err = 0;
- ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "rtsig signo:%d fd:%d band:%04Xd",
- signo, si.si_fd, si.si_band);
- }
-
- delta = ngx_current_msec;
-
- if (flags & NGX_UPDATE_TIME) {
- ngx_time_update(0, 0);
- }
-
- if (err) {
ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT,
cycle->log, err, "sigtimedwait() failed");
return NGX_ERROR;
}
- if (timer != NGX_TIMER_INFINITE) {
- delta = ngx_current_msec - delta;
+ ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "rtsig signo:%d fd:%d band:%04Xd",
+ signo, si.si_fd, si.si_band);
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "rtsig timer: %M, delta: %M", timer, delta);
+ if (flags & NGX_UPDATE_TIME) {
+ ngx_time_update(0, 0);
}
rtscf = ngx_event_get_conf(ngx_cycle->conf_ctx, ngx_rtsig_module);
@@ -400,8 +392,12 @@ ngx_rtsig_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
wev->handler(wev);
}
+ return NGX_OK;
+
} else if (signo == SIGALRM) {
+ ngx_time_update(0, 0);
+
return NGX_OK;
} else if (signo == SIGIO) {
@@ -431,18 +427,12 @@ ngx_rtsig_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
return NGX_ERROR;
- } else if (signo != -1) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "sigtimedwait() returned unexpected signal: %d", signo);
-
- return NGX_ERROR;
}
- if (signo != -1) {
- return NGX_OK;
- }
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "sigtimedwait() returned unexpected signal: %d", signo);
- return NGX_AGAIN;
+ return NGX_ERROR;
}
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index da4303def..57f6f0500 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -250,7 +250,6 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
int ready, nready;
ngx_uint_t i, found;
ngx_err_t err;
- ngx_msec_t delta;
ngx_event_t *ev, **queue;
ngx_connection_t *c;
struct timeval tv, *tp;
@@ -331,26 +330,10 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
err = 0;
}
- delta = ngx_current_msec;
-
if (flags & NGX_UPDATE_TIME) {
ngx_time_update(0, 0);
}
- if (timer != NGX_TIMER_INFINITE) {
- delta = ngx_current_msec - delta;
-
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "select timer: %M, delta: %M", timer, delta);
-
- } else {
- if (ready == 0) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "select() returned no events without timeout");
- return NGX_ERROR;
- }
- }
-
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"select ready %d", ready);
@@ -383,8 +366,14 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
#endif
- if (nevents == 0) {
- return NGX_OK;
+ if (ready == 0) {
+ if (timer != NGX_TIMER_INFINITE) {
+ return NGX_OK;
+ }
+
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "select() returned no events without timeout");
+ return NGX_ERROR;
}
ngx_mutex_lock(ngx_posted_events_mutex);
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 6dc6e3cb5..4775e5d9b 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -199,7 +199,7 @@ void
ngx_process_events_and_timers(ngx_cycle_t *cycle)
{
ngx_uint_t flags;
- ngx_msec_t timer;
+ ngx_msec_t timer, delta;
if (ngx_timer_resolution) {
timer = NGX_TIMER_INFINITE;
@@ -240,16 +240,25 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
}
}
+ delta = ngx_current_msec;
+
(void) ngx_process_events(cycle, timer, flags);
- ngx_event_expire_timers();
+ delta = ngx_current_msec - delta;
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "timer delta: %M", delta);
+
+ if (delta) {
+ ngx_event_expire_timers();
+ }
if (ngx_posted_accept_events) {
ngx_event_process_posted(cycle, &ngx_posted_accept_events);
}
if (ngx_accept_mutex_held) {
- ngx_accept_mutex = 0;
+ *ngx_accept_mutex = 0;
}
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,