Mercurial > hg > nginx
comparison src/event/modules/ngx_kqueue_module.c @ 245:e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 29 Jan 2004 21:45:01 +0000 |
parents | 5d4f49dc8de5 |
children | 6753e8cdaa2c |
comparison
equal
deleted
inserted
replaced
244:187dc0a3197d | 245:e6c005b66b3a |
---|---|
337 } | 337 } |
338 | 338 |
339 | 339 |
340 static int ngx_kqueue_process_events(ngx_log_t *log) | 340 static int ngx_kqueue_process_events(ngx_log_t *log) |
341 { | 341 { |
342 ngx_int_t events, instance, i; | 342 int events; |
343 ngx_int_t instance, i; | |
343 ngx_err_t err; | 344 ngx_err_t err; |
344 ngx_msec_t timer; | 345 ngx_msec_t timer; |
345 ngx_event_t *ev; | 346 ngx_event_t *ev; |
346 ngx_epoch_msec_t delta; | 347 ngx_epoch_msec_t delta; |
347 struct timeval tv; | 348 struct timeval tv; |
353 if (timer) { | 354 if (timer) { |
354 ts.tv_sec = timer / 1000; | 355 ts.tv_sec = timer / 1000; |
355 ts.tv_nsec = (timer % 1000) * 1000000; | 356 ts.tv_nsec = (timer % 1000) * 1000000; |
356 tp = &ts; | 357 tp = &ts; |
357 | 358 |
358 #if 0 | |
359 ngx_gettimeofday(&tv); | |
360 delta = tv.tv_sec * 1000 + tv.tv_usec / 1000; | |
361 #endif | |
362 | |
363 } else { | 359 } else { |
364 delta = 0; | |
365 tp = NULL; | 360 tp = NULL; |
366 } | 361 } |
367 | 362 |
368 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, "kevent timer: %d", timer); | 363 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, "kevent timer: %d", timer); |
369 | 364 |
376 } | 371 } |
377 | 372 |
378 nchanges = 0; | 373 nchanges = 0; |
379 | 374 |
380 ngx_gettimeofday(&tv); | 375 ngx_gettimeofday(&tv); |
381 | 376 ngx_time_update(tv.tv_sec); |
382 #if 1 | 377 |
383 delta = ngx_elapsed_msec; | 378 delta = ngx_elapsed_msec; |
384 #endif | |
385 ngx_elapsed_msec = tv.tv_sec * 1000 + tv.tv_usec / 1000 - ngx_start_msec; | 379 ngx_elapsed_msec = tv.tv_sec * 1000 + tv.tv_usec / 1000 - ngx_start_msec; |
386 | |
387 ngx_time_update(tv.tv_sec); | |
388 | 380 |
389 if (timer) { | 381 if (timer) { |
390 delta = ngx_elapsed_msec - delta; | 382 delta = ngx_elapsed_msec - delta; |
383 | |
384 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, | |
385 "kevent timer: %d, delta: %d", timer, (int) delta); | |
391 | 386 |
392 } else { | 387 } else { |
393 if (events == 0) { | 388 if (events == 0) { |
394 ngx_log_error(NGX_LOG_ALERT, log, 0, | 389 ngx_log_error(NGX_LOG_ALERT, log, 0, |
395 "kevent() returned no events without timeout"); | 390 "kevent() returned no events without timeout"); |
396 return NGX_ERROR; | 391 return NGX_ERROR; |
397 } | 392 } |
398 } | 393 } |
399 | 394 |
400 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, | |
401 "kevent timer: %d, delta: %d", timer, (int) delta); | |
402 | |
403 if (err) { | 395 if (err) { |
404 ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT, | 396 ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT, |
405 log, err, "kevent() failed"); | 397 log, err, "kevent() failed"); |
406 return NGX_ERROR; | 398 return NGX_ERROR; |
407 } | 399 } |
494 | 486 |
495 return NGX_OK; | 487 return NGX_OK; |
496 } | 488 } |
497 | 489 |
498 | 490 |
499 #if 0 | |
500 | |
501 static void ngx_kqueue_thread_handler(ngx_event_t *ev, ngx_log_t *log) | |
502 { | |
503 ngx_int_t instance; | |
504 | |
505 instance = (uintptr_t) ev & 1; | |
506 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1); | |
507 | |
508 if (ev->active && ev->instance == instance) { | |
509 ev->event_handler(ev); | |
510 return; | |
511 } | |
512 | |
513 /* | |
514 * it's a stale event from a file descriptor | |
515 * that was just closed in this iteration | |
516 */ | |
517 | |
518 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, | |
519 "kevent: stale event " PTR_FMT, ev); | |
520 | |
521 } | |
522 | |
523 #endif | |
524 | |
525 | |
526 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle) | 491 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle) |
527 { | 492 { |
528 ngx_kqueue_conf_t *kcf; | 493 ngx_kqueue_conf_t *kcf; |
529 | 494 |
530 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)), | 495 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)), |