comparison src/event/modules/ngx_kqueue_module.c @ 307:ce375c313e96

nginx-0.0.3-2004-04-08-19:58:25 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 08 Apr 2004 15:58:25 +0000
parents 6b91bfbc4123
children 11ff50a35d6d
comparison
equal deleted inserted replaced
306:6b91bfbc4123 307:ce375c313e96
20 static void ngx_kqueue_done(ngx_cycle_t *cycle); 20 static void ngx_kqueue_done(ngx_cycle_t *cycle);
21 static int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags); 21 static int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags);
22 static int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags); 22 static int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags);
23 static int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags); 23 static int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags);
24 static int ngx_kqueue_process_events(ngx_cycle_t *cycle); 24 static int ngx_kqueue_process_events(ngx_cycle_t *cycle);
25 static ngx_inline void ngx_kqueue_dump_event(ngx_log_t *log,
26 struct kevent *kev);
25 27
26 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle); 28 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle);
27 static char *ngx_kqueue_init_conf(ngx_cycle_t *cycle, void *conf); 29 static char *ngx_kqueue_init_conf(ngx_cycle_t *cycle, void *conf);
28 30
29 31
441 443
442 lock = 1; 444 lock = 1;
443 445
444 for (i = 0; i < events; i++) { 446 for (i = 0; i < events; i++) {
445 447
446 ngx_log_debug6(NGX_LOG_DEBUG_EVENT, cycle->log, 0, 448 ngx_kqueue_dump_event(cycle->log, &event_list[i]);
447
448 (event_list[i].ident > 0x8000000
449 && event_list[i].ident != (unsigned) -1) ?
450 "kevent: " PTR_FMT ": ft:%d fl:%04X ff:%08X d:%d ud:"
451 PTR_FMT:
452 "kevent: %d: ft:%d fl:%04X ff:%08X d:%d ud:" PTR_FMT,
453
454 event_list[i].ident, event_list[i].filter,
455 event_list[i].flags, event_list[i].fflags,
456 event_list[i].data, event_list[i].udata);
457 449
458 if (event_list[i].flags & EV_ERROR) { 450 if (event_list[i].flags & EV_ERROR) {
459 ngx_log_error(NGX_LOG_ALERT, cycle->log, event_list[i].data, 451 ngx_log_error(NGX_LOG_ALERT, cycle->log, event_list[i].data,
460 "kevent() error on %d", event_list[i].ident); 452 "kevent() error on %d", event_list[i].ident);
461 continue; 453 continue;
469 case EVFILT_WRITE: 461 case EVFILT_WRITE:
470 462
471 instance = (uintptr_t) ev & 1; 463 instance = (uintptr_t) ev & 1;
472 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1); 464 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1);
473 ev->returned_instance = instance; 465 ev->returned_instance = instance;
466
467 if (ev->log && (ev->log->log_level & NGX_LOG_DEBUG_CONNECTION)) {
468 ngx_kqueue_dump_event(ev->log, &event_list[i]);
469 }
474 470
475 if (!ev->active || ev->instance != instance) { 471 if (!ev->active || ev->instance != instance) {
476 472
477 /* 473 /*
478 * the stale event from a file descriptor 474 * the stale event from a file descriptor
558 554
559 return NGX_OK; 555 return NGX_OK;
560 } 556 }
561 557
562 558
559 static ngx_inline void ngx_kqueue_dump_event(ngx_log_t *log, struct kevent *kev)
560 {
561 ngx_log_debug6(NGX_LOG_DEBUG_EVENT, log, 0,
562 (kev->ident > 0x8000000 && kev->ident != (unsigned) -1) ?
563 "kevent: " PTR_FMT ": ft:%d fl:%04X ff:%08X d:%d ud:"
564 PTR_FMT:
565 "kevent: %d: ft:%d fl:%04X ff:%08X d:%d ud:" PTR_FMT,
566 kev->ident, kev->filter,
567 kev->flags, kev->fflags,
568 kev->data, kev->udata);
569 }
570
571
563 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle) 572 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle)
564 { 573 {
565 ngx_kqueue_conf_t *kcf; 574 ngx_kqueue_conf_t *kcf;
566 575
567 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)), 576 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)),