aboutsummaryrefslogtreecommitdiff
path: root/src/event/modules/ngx_poll_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/modules/ngx_poll_module.c')
-rw-r--r--src/event/modules/ngx_poll_module.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index 34f2b1191..e771e92fe 100644
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -224,16 +224,19 @@ static int ngx_poll_process_events(ngx_log_t *log)
{
int ready, found, j;
u_int nready, i;
- ngx_msec_t timer, delta;
+ ngx_msec_t timer;
ngx_err_t err;
ngx_cycle_t **cycle;
ngx_event_t *ev;
+ ngx_epoch_msec_t delta;
ngx_connection_t *c;
+ struct timeval tv;
timer = ngx_event_find_timer();
if (timer) {
- delta = ngx_msec();
+ ngx_gettimeofday(&tv);
+ delta = tv.tv_sec * 1000 + tv.tv_usec / 1000;
} else {
timer = INFTIM;
@@ -259,15 +262,20 @@ static int ngx_poll_process_events(ngx_log_t *log)
ngx_log_debug(log, "poll ready %d" _ ready);
- /* TODO: time */
+ ngx_gettimeofday(&tv);
+
+ if (ngx_cached_time != tv.tv_sec) {
+ ngx_cached_time = tv.tv_sec;
+ ngx_time_update();
+ }
if ((int) timer != INFTIM) {
- delta = ngx_msec() - delta;
+ delta = tv.tv_sec * 1000 + tv.tv_usec / 1000 - delta;
#if (NGX_DEBUG_EVENT)
- ngx_log_debug(log, "poll timer: %d, delta: %d" _ timer _ delta);
+ ngx_log_debug(log, "poll timer: %d, delta: %d" _ timer _ (int) delta);
#endif
- ngx_event_expire_timers(delta);
+ ngx_event_expire_timers((ngx_msec_t) delta);
} else {
if (ready == 0) {
@@ -277,7 +285,7 @@ static int ngx_poll_process_events(ngx_log_t *log)
}
#if (NGX_DEBUG_EVENT)
- ngx_log_debug(log, "poll timer: %d, delta: %d" _ timer _ delta);
+ ngx_log_debug(log, "poll timer: %d, delta: %d" _ timer _ (int) delta);
#endif
}