From owner-svn-src-projects@FreeBSD.ORG Fri Aug 3 16:04:36 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0B95106566B; Fri, 3 Aug 2012 16:04:36 +0000 (UTC) (envelope-from davide@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7433C8FC0C; Fri, 3 Aug 2012 16:04:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q73G4aXe042845; Fri, 3 Aug 2012 16:04:36 GMT (envelope-from davide@svn.freebsd.org) Received: (from davide@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q73G4a4s042843; Fri, 3 Aug 2012 16:04:36 GMT (envelope-from davide@svn.freebsd.org) Message-Id: <201208031604.q73G4a4s042843@svn.freebsd.org> From: Davide Italiano Date: Fri, 3 Aug 2012 16:04:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r239017 - projects/calloutng/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Aug 2012 16:04:36 -0000 Author: davide Date: Fri Aug 3 16:04:35 2012 New Revision: 239017 URL: http://svn.freebsd.org/changeset/base/239017 Log: Some optimizations: simplify the logic of softclock() removing a check which is likely to be false in most of the cases, after recent changes. Also, remove an unneeded and duplicated bitwise and operation. Discussed with: mav Modified: projects/calloutng/sys/kern/kern_timeout.c Modified: projects/calloutng/sys/kern/kern_timeout.c ============================================================================== --- projects/calloutng/sys/kern/kern_timeout.c Fri Aug 3 15:58:05 2012 (r239016) +++ projects/calloutng/sys/kern/kern_timeout.c Fri Aug 3 16:04:35 2012 (r239017) @@ -596,8 +596,7 @@ callout_cc_add(struct callout *c, struct (u_int) (c->c_time.frac & 0xffffffff)); } bucket = get_bucket(&c->c_time); - TAILQ_INSERT_TAIL(&cc->cc_callwheel[bucket & callwheelmask], - c, c_links.tqe); + TAILQ_INSERT_TAIL(&cc->cc_callwheel[bucket], c, c_links.tqe); /* * Inform the eventtimers(4) subsystem there's a new callout * that has been inserted, but only if really required. @@ -824,41 +823,20 @@ softclock(void *arg) { struct callout_cpu *cc; struct callout *c; - int steps; /* #steps since we last allowed interrupts */ - int depth; - int mpcalls; - int lockcalls; - int gcalls; - -#ifndef MAX_SOFTCLOCK_STEPS -#define MAX_SOFTCLOCK_STEPS 100 /* Maximum allowed value of steps. */ -#endif /* MAX_SOFTCLOCK_STEPS */ - + int depth, gcalls, lockcalls, mpcalls; + depth = 0; mpcalls = 0; lockcalls = 0; gcalls = 0; - steps = 0; cc = (struct callout_cpu *)arg; CC_LOCK(cc); - c = TAILQ_FIRST(&cc->cc_expireq); while (c != NULL) { ++depth; - ++steps; - if (steps >= MAX_SOFTCLOCK_STEPS) { - cc->cc_exec_next = c; - /* Give interrupts a chance. */ - CC_UNLOCK(cc); - ; /* nothing */ - CC_LOCK(cc); - c = cc->cc_exec_next; - steps = 0; - } else { - TAILQ_REMOVE(&cc->cc_expireq, c, c_staiter); - c = softclock_call_cc(c, cc, &mpcalls, - &lockcalls, &gcalls, 0); - } + TAILQ_REMOVE(&cc->cc_expireq, c, c_staiter); + c = softclock_call_cc(c, cc, &mpcalls, + &lockcalls, &gcalls, 0); } #ifdef CALLOUT_PROFILING avg_depth += (depth * 1000 - avg_depth) >> 8; @@ -866,7 +844,6 @@ softclock(void *arg) avg_lockcalls += (lockcalls * 1000 - avg_lockcalls) >> 8; avg_gcalls += (gcalls * 1000 - avg_gcalls) >> 8; #endif - cc->cc_exec_next = NULL; CC_UNLOCK(cc); }