Mercurial > hg > nginx
comparison src/event/modules/ngx_kqueue_module.c @ 210:00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 14 Dec 2003 20:10:27 +0000 |
parents | e1c815be05ae |
children | f536f91e8e99 |
comparison
equal
deleted
inserted
replaced
209:e1c815be05ae | 210:00cafae0bdf1 |
---|---|
417 return NGX_ERROR; | 417 return NGX_ERROR; |
418 } | 418 } |
419 | 419 |
420 for (i = 0; i < events; i++) { | 420 for (i = 0; i < events; i++) { |
421 | 421 |
422 #if (NGX_DEBUG_EVENT) | 422 ngx_log_debug6(NGX_LOG_DEBUG_EVENT, log, 0, |
423 if (event_list[i].ident > 0x8000000 | 423 |
424 && event_list[i].ident != (unsigned) -1) | 424 (event_list[i].ident > 0x8000000 |
425 { | 425 && event_list[i].ident != (unsigned) -1) ? |
426 ngx_log_debug(log, | 426 "kevent: " PTR_FMT ": ft:%d fl:%04X ff:%08X d:%d ud:" |
427 "kevent: %08x: ft:%d fl:%08x ff:%08x d:%d ud:%08x" _ | 427 PTR_FMT: |
428 event_list[i].ident _ event_list[i].filter _ | 428 "kevent: %d: ft:%d fl:%04X ff:%08X d:%d ud:" PTR_FMT, |
429 event_list[i].flags _ event_list[i].fflags _ | 429 |
430 event_list[i].data _ event_list[i].udata); | 430 event_list[i].ident, event_list[i].filter, |
431 } else { | 431 event_list[i].flags, event_list[i].fflags, |
432 ngx_log_debug(log, | 432 event_list[i].data, event_list[i].udata); |
433 "kevent: %d: ft:%d fl:%08x ff:%08x d:%d ud:%08x" _ | |
434 event_list[i].ident _ event_list[i].filter _ | |
435 event_list[i].flags _ event_list[i].fflags _ | |
436 event_list[i].data _ event_list[i].udata); | |
437 } | |
438 #endif | |
439 | 433 |
440 if (event_list[i].flags & EV_ERROR) { | 434 if (event_list[i].flags & EV_ERROR) { |
441 ngx_log_error(NGX_LOG_ALERT, log, event_list[i].data, | 435 ngx_log_error(NGX_LOG_ALERT, log, event_list[i].data, |
442 "kevent() error on %d", event_list[i].ident); | 436 "kevent() error on %d", event_list[i].ident); |
443 continue; | 437 continue; |
451 case EVFILT_WRITE: | 445 case EVFILT_WRITE: |
452 | 446 |
453 instance = (uintptr_t) ev & 1; | 447 instance = (uintptr_t) ev & 1; |
454 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1); | 448 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1); |
455 | 449 |
456 /* | |
457 * it's a stale event from a file descriptor | |
458 * that was just closed in this iteration | |
459 */ | |
460 | |
461 if (ev->active == 0 || ev->instance != instance) { | 450 if (ev->active == 0 || ev->instance != instance) { |
462 ngx_log_debug(log, "stale kevent"); | 451 |
452 /* | |
453 * it's a stale event from a file descriptor | |
454 * that was just closed in this iteration | |
455 */ | |
456 | |
457 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, | |
458 "kevent: stale event " PTR_FMT, ev); | |
463 continue; | 459 continue; |
464 } | 460 } |
465 | 461 |
466 ev->available = event_list[i].data; | 462 ev->available = event_list[i].data; |
467 | 463 |
509 | 505 |
510 return NGX_OK; | 506 return NGX_OK; |
511 } | 507 } |
512 | 508 |
513 | 509 |
510 static void ngx_kqueue_thread_handler(ngx_event_t *ev, ngx_log_t *log) | |
511 { | |
512 ngx_int_t instance; | |
513 | |
514 instance = (uintptr_t) ev & 1; | |
515 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1); | |
516 | |
517 if (ev->active && ev->instance == instance) { | |
518 ev->event_handler(ev); | |
519 return; | |
520 } | |
521 | |
522 /* | |
523 * it's a stale event from a file descriptor | |
524 * that was just closed in this iteration | |
525 */ | |
526 | |
527 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, | |
528 "kevent: stale event " PTR_FMT, ev); | |
529 | |
530 } | |
531 | |
532 | |
514 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle) | 533 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle) |
515 { | 534 { |
516 ngx_kqueue_conf_t *kcf; | 535 ngx_kqueue_conf_t *kcf; |
517 | 536 |
518 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)), | 537 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)), |