From: rousskov <> Date: Wed, 13 Feb 2008 06:02:13 +0000 (+0000) Subject: Merging async-call branch changes to HEAD: X-Git-Tag: BASIC_TPROXY4~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d527e0ad439815b51203604da5a655dfd27d3cf;p=thirdparty%2Fsquid.git Merging async-call branch changes to HEAD: Removed calls to comm_iocallbackpending(). They were added to "Speed up processing of queued events significantly, to not cause large delays when under low load" but I do not see how having pending callbacks can be relevant because all pending callbacks are (should be) executed before FDs are probed. Converting commSetTimeout to use CommCalls. --- diff --git a/src/comm_poll.cc b/src/comm_poll.cc index 3c9886e99b..da2fc42c2a 100644 --- a/src/comm_poll.cc +++ b/src/comm_poll.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_poll.cc,v 1.25 2008/01/07 16:22:06 hno Exp $ + * $Id: comm_poll.cc,v 1.26 2008/02/12 23:02:13 rousskov Exp $ * * DEBUG: section 5 Socket Functions * @@ -388,9 +388,6 @@ comm_select(int msec) PROF_stop(comm_poll_prep_pfds); - if (comm_iocallbackpending()) - npending++; - if (npending) msec = 0; @@ -521,25 +518,25 @@ comm_select(int msec) } if (revents & POLLNVAL) { - close_handler *ch; + AsyncCall::Pointer ch; debugs(5, 0, "WARNING: FD " << fd << " has handlers, but it's invalid."); debugs(5, 0, "FD " << fd << " is a " << fdTypeStr[F->type]); debugs(5, 0, "--> " << F->desc); - debugs(5, 0, "tmout:" << F->timeout_handler << " read:" << + debugs(5, 0, "tmout:" << F->timeoutHandler << "read:" << F->read_handler << " write:" << F->write_handler); - for (ch = F->closeHandler; ch; ch = ch->next) - debugs(5, 0, " close handler: " << ch->handler); + for (ch = F->closeHandler; ch != NULL; ch = ch->Next()) + debugs(5, 0, " close handler: " << ch); - if (F->closeHandler) { + if (F->closeHandler != NULL) { commCallCloseHandlers(fd); - } else if (F->timeout_handler) { + } else if (F->timeoutHandler != NULL) { debugs(5, 0, "comm_poll: Calling Timeout Handler"); - F->timeout_handler(fd, F->timeout_data); + ScheduleCallHere(F->timeoutHandler); } F->closeHandler = NULL; - F->timeout_handler = NULL; + F->timeoutHandler = NULL; F->read_handler = NULL; F->write_handler = NULL; diff --git a/src/comm_select.cc b/src/comm_select.cc index 493a1528f8..32934ff689 100644 --- a/src/comm_select.cc +++ b/src/comm_select.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_select.cc,v 1.83 2008/01/07 16:22:06 hno Exp $ + * $Id: comm_select.cc,v 1.84 2008/02/12 23:02:13 rousskov Exp $ * * DEBUG: section 5 Socket Functions * @@ -437,9 +437,6 @@ comm_select(int msec) if (msec > MAX_POLL_TIME) msec = MAX_POLL_TIME; - if (comm_iocallbackpending()) - pending++; - if (pending) msec = 0; @@ -703,7 +700,7 @@ examine_select(fd_set * readfds, fd_set * writefds) fd_set write_x; struct timeval tv; - close_handler *ch = NULL; + AsyncCall::Pointer ch = NULL; fde *F = NULL; struct stat sb; @@ -738,20 +735,20 @@ examine_select(fd_set * readfds, fd_set * writefds) debugs(5, 0, "FD " << fd << ": " << xstrerror()); debugs(5, 0, "WARNING: FD " << fd << " has handlers, but it's invalid."); debugs(5, 0, "FD " << fd << " is a " << fdTypeStr[F->type] << " called '" << F->desc << "'"); - debugs(5, 0, "tmout:" << F->timeout_handler << " read:" << F->read_handler << " write:" << F->write_handler); + debugs(5, 0, "tmout:" << F->timeoutHandler << " read:" << F->read_handler << " write:" << F->write_handler); - for (ch = F->closeHandler; ch; ch = ch->next) - debugs(5, 0, " close handler: " << ch->handler); + for (ch = F->closeHandler; ch != NULL; ch = ch->Next()) + debugs(5, 0, " close handler: " << ch); - if (F->closeHandler) { + if (F->closeHandler != NULL) { commCallCloseHandlers(fd); - } else if (F->timeout_handler) { + } else if (F->timeoutHandler != NULL) { debugs(5, 0, "examine_select: Calling Timeout Handler"); - F->timeout_handler(fd, F->timeout_data); + ScheduleCallHere(F->timeoutHandler); } F->closeHandler = NULL; - F->timeout_handler = NULL; + F->timeoutHandler = NULL; F->read_handler = NULL; F->write_handler = NULL; FD_CLR(fd, readfds); diff --git a/src/comm_select_win32.cc b/src/comm_select_win32.cc index 4a112ab25b..922c47daa1 100644 --- a/src/comm_select_win32.cc +++ b/src/comm_select_win32.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_select_win32.cc,v 1.5 2008/01/07 16:22:06 hno Exp $ + * $Id: comm_select_win32.cc,v 1.6 2008/02/12 23:02:13 rousskov Exp $ * * DEBUG: section 5 Socket Functions * @@ -472,9 +472,6 @@ comm_select(int msec) if (msec > MAX_POLL_TIME) msec = MAX_POLL_TIME; - if (comm_iocallbackpending()) - pending++; - if (pending) msec = 0; @@ -791,7 +788,7 @@ examine_select(fd_set * readfds, fd_set * writefds) fd_set write_x; struct timeval tv; - close_handler *ch = NULL; + AsyncCall::Pointer ch = NULL; fde *F = NULL; struct stat sb; @@ -822,20 +819,20 @@ examine_select(fd_set * readfds, fd_set * writefds) debugs(5, 0, "FD " << fd << ": " << xstrerror()); debugs(5, 0, "WARNING: FD " << fd << " has handlers, but it's invalid."); debugs(5, 0, "FD " << fd << " is a " << fdTypeStr[F->type] << " called '" << F->desc << "'"); - debugs(5, 0, "tmout:" << F->timeout_handler << " read:" << F->read_handler << " write:" << F->write_handler); + debugs(5, 0, "tmout:" << F->timeoutHandler << " read:" << F->read_handler << " write:" << F->write_handler); - for (ch = F->closeHandler; ch; ch = ch->next) - debugs(5, 0, " close handler: " << ch->handler); + for (ch = F->closeHandler; ch!= NULL; ch = ch->Next()) + debugs(5, 0, " close handler: " << ch); - if (F->closeHandler) { + if (F->closeHandler != NULL) { commCallCloseHandlers(fd); - } else if (F->timeout_handler) { + } else if (F->timeoutHandler != NULL) { debugs(5, 0, "examine_select: Calling Timeout Handler"); - F->timeout_handler(fd, F->timeout_data); + ScheduleCallHere(F->timeoutHandler); } F->closeHandler = NULL; - F->timeout_handler = NULL; + F->timeoutHandler = NULL; F->read_handler = NULL; F->write_handler = NULL; FD_CLR(fd, readfds);