Mercurial > hg > nginx
changeset 250:1903c6821958
nginx-0.0.2-2004-02-03-23:27:11 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 03 Feb 2004 20:27:11 +0000 |
parents | 2a0540287298 |
children | c31c40540318 |
files | auto/fmt/fmt auto/func auto/inc auto/init auto/types/sizeof auto/types/typedef auto/types/uintptr_t src/event/modules/ngx_poll_module.c src/event/modules/ngx_select_module.c src/event/ngx_event.c |
diffstat | 10 files changed, 65 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/auto/fmt/fmt Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/fmt/fmt Tue Feb 03 20:27:11 2004 +0000 @@ -1,5 +1,5 @@ -echo -n "checking for $ngx_type printf() format ..." +echo $ngx_n "checking for $ngx_type printf() format ..." $ngx_c echo >> $NGX_ERR echo "checking for $ngx_type printf() format" >> $NGX_ERR @@ -33,9 +33,9 @@ if [ -x $NGX_AUTOTEST ]; then if [ "`$NGX_AUTOTEST`" = $max_size ]; then if [ $ngx_fmt_collect = yes ]; then - echo -n "$comma \"${fmt}\" is appropriate" + echo $ngx_n "$comma \"${fmt}\" is appropriate" $ngx_c else - echo -n "$comma \"${fmt}\" used" + echo $ngx_n "$comma \"${fmt}\" used" $ngx_c fi ngx_fmt=$fmt fi @@ -53,7 +53,7 @@ fi fi - echo -n "$comma \"${fmt}\" is not appropriate" + echo $ngx_n "$comma \"${fmt}\" is not appropriate" $ngx_c comma="," done
--- a/auto/func Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/func Tue Feb 03 20:27:11 2004 +0000 @@ -1,5 +1,5 @@ -echo -n "checking for $ngx_func ..." +echo $ngx_n "checking for $ngx_func ..." $ngx_c echo >> $NGX_ERR echo "checking for $ngx_func" >> $NGX_ERR
--- a/auto/inc Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/inc Tue Feb 03 20:27:11 2004 +0000 @@ -1,5 +1,5 @@ -echo -n "checking for $ngx_inc ..." +echo $ngx_n "checking for $ngx_inc ..." $ngx_c echo >> $NGX_ERR echo "checking for $ngx_inc" >> $NGX_ERR
--- a/auto/init Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/init Tue Feb 03 20:27:11 2004 +0000 @@ -6,3 +6,20 @@ NGX_AUTOTEST=$OBJS/autotest NGX_ERR=$OBJS/autoconf.err + + +# checking echo's "-n" option and "\c" capabilties + +if echo "test\c" | grep c >/dev/null; then + if echo -n test | grep n >/dev/null; then + ngx_n= + ngx_c= + else + ngx_n=-n + ngx_c= + fi + +else + ngx_n= + ngx_c='\c' +fi
--- a/auto/types/sizeof Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/types/sizeof Tue Feb 03 20:27:11 2004 +0000 @@ -1,5 +1,5 @@ -echo -n "checking for $ngx_type size ..." +echo $ngx_n "checking for $ngx_type size ..." $ngx_c echo >> $NGX_ERR echo "checking for $ngx_type size" >> $NGX_ERR
--- a/auto/types/typedef Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/types/typedef Tue Feb 03 20:27:11 2004 +0000 @@ -1,5 +1,5 @@ -echo -n "checking for $ngx_type ..." +echo $ngx_n "checking for $ngx_type ..." $ngx_c echo >> $NGX_ERR echo "checking for $ngx_type" >> $NGX_ERR @@ -39,7 +39,7 @@ rm $NGX_AUTOTEST* if [ $found = no ]; then - echo -n " $type not found" + echo $ngx_n " $type not found" $ngx_c else break fi
--- a/auto/types/uintptr_t Tue Feb 03 16:43:54 2004 +0000 +++ b/auto/types/uintptr_t Tue Feb 03 20:27:11 2004 +0000 @@ -1,5 +1,5 @@ -echo -n "checking for uintptr_t ... " +echo $ngx_n "checking for uintptr_t ... " $ngx_c echo >> $NGX_ERR echo "checking for uintptr_t" >> $NGX_ERR @@ -23,7 +23,7 @@ echo " uintptr_t found" found=yes else - echo -n " uintptr_t not found" + echo $ngx_n " uintptr_t not found" $ngx_c fi rm $NGX_AUTOTEST*
--- a/src/event/modules/ngx_poll_module.c Tue Feb 03 16:43:54 2004 +0000 +++ b/src/event/modules/ngx_poll_module.c Tue Feb 03 20:27:11 2004 +0000 @@ -130,6 +130,12 @@ c = ev->data; + if (ev->index != NGX_INVALID_INDEX) { + ngx_log_error(NGX_LOG_ALERT, ev->log, 0, + "poll event fd:%d ev:%d is already set", c->fd, event); + return NGX_OK; + } + ev->active = 1; ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0; @@ -159,6 +165,9 @@ nevents++; } else { + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0, + "poll index: %d", e->index); + event_list[e->index].events |= event; ev->index = e->index; } @@ -195,13 +204,18 @@ "poll del event: fd:%d ev:%d", c->fd, event); if (e == NULL || e->index == NGX_INVALID_INDEX) { - if (ev->index < (u_int) --nevents) { + nevents--; + + if (ev->index < (u_int) nevents) { event_list[ev->index] = event_list[nevents]; event_index[ev->index] = event_index[nevents]; event_index[ev->index]->index = ev->index; } } else { + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0, + "poll index: %d", e->index); + event_list[e->index].events &= ~event; } @@ -232,8 +246,8 @@ #if (NGX_DEBUG) for (i = 0; i < nevents; i++) { - ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, "poll: fd:%d ev:%04X", - event_list[i].fd, event_list[i].events); + ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0, "poll: %d: fd:%d ev:%04X", + i, event_list[i].fd, event_list[i].events); } ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0, "poll timer: %d", timer); @@ -278,9 +292,9 @@ for (i = 0; i < nevents && ready; i++) { - ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0, - "poll: fd:%d ev:%04X rev:%04X", - event_list[i].fd, + ngx_log_debug4(NGX_LOG_DEBUG_EVENT, log, 0, + "poll: %d: fd:%d ev:%04X rev:%04X", + i, event_list[i].fd, event_list[i].events, event_list[i].revents); if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { @@ -315,6 +329,18 @@ if (c->fd == -1) { ngx_log_error(NGX_LOG_ALERT, log, 0, "unknown cycle"); + + /* + * it is certainly our fault and it should be investigated, + * in the meantime we disable this event to avoid a CPU spinning + */ + + if (i == nevents - 1) { + nevents--; + } else { + event_list[i].fd = -1; + } + continue; }
--- a/src/event/modules/ngx_select_module.c Tue Feb 03 16:43:54 2004 +0000 +++ b/src/event/modules/ngx_select_module.c Tue Feb 03 20:27:11 2004 +0000 @@ -136,7 +136,7 @@ if (ev->index != NGX_INVALID_INDEX) { ngx_log_error(NGX_LOG_ALERT, ev->log, 0, - "%d:%d is already set", c->fd, event); + "select event fd:%d ev:%d is already set", c->fd, event); return NGX_OK; } @@ -268,7 +268,7 @@ #if !(WIN32) if (max_fd == -1) { for (i = 0; i < nevents; i++) { - c = (ngx_connection_t *) event_index[i]->data; + c = event_index[i]->data; if (max_fd < c->fd) { max_fd = c->fd; } @@ -282,7 +282,7 @@ #if (NGX_DEBUG) for (i = 0; i < nevents; i++) { ev = event_index[i]; - c = (ngx_connection_t *) ev->data; + c = ev->data; ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, "select event: fd:%d wr:%d", c->fd,ev->write); } @@ -370,7 +370,7 @@ for (i = 0; i < nevents; i++) { ev = event_index[i]; - c = (ngx_connection_t *) ev->data; + c = ev->data; found = 0; if (ev->write) {