comparison src/event/modules/ngx_kqueue_module.c @ 305:4b1a3a4acc60

nginx-0.0.3-2004-04-02-19:13:20 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 02 Apr 2004 15:13:20 +0000
parents 00c5660d2707
children 6b91bfbc4123
comparison
equal deleted inserted replaced
304:bcbe876f4262 305:4b1a3a4acc60
344 344
345 345
346 static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle) 346 static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle)
347 { 347 {
348 int events; 348 int events;
349 ngx_int_t i, instance; 349 ngx_int_t i;
350 ngx_uint_t instance;
350 ngx_err_t err; 351 ngx_err_t err;
351 ngx_msec_t timer; 352 ngx_msec_t timer;
352 ngx_event_t *ev; 353 ngx_event_t *ev;
353 ngx_epoch_msec_t delta; 354 ngx_epoch_msec_t delta;
354 struct timeval tv; 355 struct timeval tv;
515 event_list[i].filter); 516 event_list[i].filter);
516 continue; 517 continue;
517 } 518 }
518 519
519 520
520 #if 0 521 if (ngx_threaded || ngx_accept_mutex_held) {
521 if (ngx_threaded || ngx_accept_token) {
522 #endif
523 if (ngx_accept_mutex_held) {
524 522
525 if (ev->accept) { 523 if (ev->accept) {
526 ngx_mutex_unlock(ngx_posted_events_mutex); 524 ngx_mutex_unlock(ngx_posted_events_mutex);
527 525
528 ev->event_handler(ev); 526 ev->event_handler(ev);
531 ngx_accept_mutex_unlock(); 529 ngx_accept_mutex_unlock();
532 return NGX_ERROR; 530 return NGX_ERROR;
533 } 531 }
534 532
535 } else { 533 } else {
536 ev->next = ngx_posted_events; 534 ev->next = (ngx_event_t *) ngx_posted_events;
537 ngx_posted_events = ev; 535 ngx_posted_events = ev;
538 } 536 }
539 537
540 continue; 538 continue;
541 } 539 }
549 547
550 if (timer && delta) { 548 if (timer && delta) {
551 ngx_event_expire_timers((ngx_msec_t) delta); 549 ngx_event_expire_timers((ngx_msec_t) delta);
552 } 550 }
553 551
554 #if (NGX_THREADS)
555 if (ngx_threaded) { 552 if (ngx_threaded) {
556 return NGX_OK; 553 return NGX_OK;
557 } 554 }
558 #endif
559 555
560 for ( ;; ) { 556 for ( ;; ) {
561 557
562 ev = (ngx_event_t *) ngx_posted_events; 558 ev = (ngx_event_t *) ngx_posted_events;
563 559
596 592
597 #if (NGX_THREADS) 593 #if (NGX_THREADS)
598 594
599 static void ngx_kqueue_thread_handler(ngx_event_t *ev) 595 static void ngx_kqueue_thread_handler(ngx_event_t *ev)
600 { 596 {
601 ngx_int_t instance;
602
603 instance = (uintptr_t) ev & 1;
604 ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1);
605
606 if ((!ev->posted && !ev->active) 597 if ((!ev->posted && !ev->active)
607 || ev->instance != ev->returned_instance) 598 || ev->instance != ev->returned_instance)
608 { 599 {
609 /* 600 /*
610 * the stale event from a file descriptor 601 * the stale event from a file descriptor