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)),