Mercurial > hg > nginx-quic
comparison src/event/modules/ngx_rtsig_module.c @ 402:f209f3391020
nginx-0.0.9-2004-07-28-20:16:50 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 28 Jul 2004 16:16:50 +0000 |
parents | b670db10cbbd |
children | da8c5707af39 |
comparison
equal
deleted
inserted
replaced
401:b32ca005e025 | 402:f209f3391020 |
---|---|
624 err = ngx_errno; | 624 err = ngx_errno; |
625 ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT, | 625 ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT, |
626 cycle->log, 0, | 626 cycle->log, 0, |
627 "poll() failed while the overflow recover"); | 627 "poll() failed while the overflow recover"); |
628 | 628 |
629 if (err != NGX_EINTR) { | 629 if (err == NGX_EINTR) { |
630 break; | 630 continue; |
631 } | 631 } |
632 } | 632 } |
633 | |
634 break; | |
633 } | 635 } |
634 | 636 |
635 if (ready <= 0) { | 637 if (ready <= 0) { |
636 continue; | 638 continue; |
637 } | 639 } |
638 | 640 |
639 if (n) { | 641 if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { |
640 if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { | 642 return NGX_ERROR; |
641 return NGX_ERROR; | |
642 } | |
643 } | 643 } |
644 | 644 |
645 for (i = 0; i < n; i++) { | 645 for (i = 0; i < n; i++) { |
646 c = &cycle->connections[overflow_list[i].fd]; | 646 c = &cycle->connections[overflow_list[i].fd]; |
647 | 647 |
684 wev->event_handler(wev); | 684 wev->event_handler(wev); |
685 } | 685 } |
686 } | 686 } |
687 } | 687 } |
688 | 688 |
689 if (n) { | 689 ngx_mutex_unlock(ngx_posted_events_mutex); |
690 ngx_mutex_unlock(ngx_posted_events_mutex); | |
691 } | |
692 | 690 |
693 if (tested >= rtscf->overflow_test) { | 691 if (tested >= rtscf->overflow_test) { |
694 | 692 |
695 if (ngx_linux_rtsig_max) { | 693 if (ngx_linux_rtsig_max) { |
696 | 694 |
721 "sysctl(KERN_RTSIGNR) failed"); | 719 "sysctl(KERN_RTSIGNR) failed"); |
722 return NGX_ERROR; | 720 return NGX_ERROR; |
723 } | 721 } |
724 | 722 |
725 /* | 723 /* |
726 * drain rt signal queue if the /proc/sys/kernel/rtsig-nr | 724 * drain the rt signal queue if the /proc/sys/kernel/rtsig-nr |
727 * is bigger than | 725 * is bigger than |
728 * /proc/sys/kernel/rtsig-max / rtsig_overflow_threshold | 726 * /proc/sys/kernel/rtsig-max / rtsig_overflow_threshold |
729 */ | 727 */ |
730 | 728 |
731 if (rtsig_max / rtscf->overflow_threshold < rtsig_nr) { | 729 if (rtsig_max / rtscf->overflow_threshold < rtsig_nr) { |
739 | 737 |
740 } else { | 738 } else { |
741 | 739 |
742 /* | 740 /* |
743 * Linux has not KERN_RTSIGMAX since 2.6.6-mm2 | 741 * Linux has not KERN_RTSIGMAX since 2.6.6-mm2 |
744 * so drain rt signal queue unconditionally | 742 * so drain the rt signal queue unconditionally |
745 */ | 743 */ |
746 | 744 |
747 while (ngx_rtsig_process_events(cycle) == NGX_OK) { /* void */ } | 745 while (ngx_rtsig_process_events(cycle) == NGX_OK) { /* void */ } |
748 } | 746 } |
749 | 747 |