Mercurial > hg > nginx
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)), |