From owner-svn-src-head@FreeBSD.ORG Mon Oct 27 20:25:57 2008 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E609F1065672; Mon, 27 Oct 2008 20:25:56 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (bigknife-pt.tunnel.tserv9.chi1.ipv6.he.net [IPv6:2001:470:1f10:75::2]) by mx1.freebsd.org (Postfix) with ESMTP id 7378E8FC16; Mon, 27 Oct 2008 20:25:56 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [IPv6:::1]) (authenticated bits=0) by server.baldwin.cx (8.14.3/8.14.3) with ESMTP id m9RKPhrs014912; Mon, 27 Oct 2008 16:25:50 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: Maxim Sobolev Date: Mon, 27 Oct 2008 16:25:36 -0400 User-Agent: KMail/1.9.7 References: <200810261858.m9QIw4YV091893@svn.freebsd.org> <200810271411.11813.jhb@freebsd.org> <4906185C.1010900@FreeBSD.org> In-Reply-To: <4906185C.1010900@FreeBSD.org> MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200810271625.36538.jhb@freebsd.org> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [IPv6:::1]); Mon, 27 Oct 2008 16:25:50 -0400 (EDT) X-Virus-Scanned: ClamAV 0.93.1/8511/Mon Oct 27 14:23:52 2008 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=BAYES_00,NO_RELAYS autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r184293 - in head/sys: amd64/amd64 i386/i386 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Oct 2008 20:25:57 -0000 On Monday 27 October 2008 03:37:00 pm Maxim Sobolev wrote: > John Baldwin wrote: > > On Sunday 26 October 2008 02:58:04 pm Maxim Sobolev wrote: > >> Author: sobomax > >> Date: Sun Oct 26 18:58:04 2008 > >> New Revision: 184293 > >> URL: http://svn.freebsd.org/changeset/base/184293 > >> > >> Log: > >> Fix division by zero panic if kern.hz less than 32. > >> > >> MFC after: 1 day > > > > This is wrong. In the case you are worried about here, lapic_timer_hz is less > > than 128. There is no way you are going to fire stathz 128 times per second > > from a timer running at < 128 hz. You are effectively running stathz at > > lapic_timer_hz, so I would just set stathz = lapic_timer_hz in this case. > > Also, I would drop the extra {}'s to match style(9) as well as the existing > > style of the file. > > It might be wrong, but it's better than division by zero panic. And it > actually works, check this screenshot: > > http://sobomax.sippysoft.com/~sobomax/ScreenShot362.png You didn't read a word I wrote apparently. :( > [ssp-root@sippy ~]$ sysctl -a | grep hz > kern.clockrate: { hz = 10, tick = 100000, profhz = 40, stathz = 128 } Yes, so now the kernel lies to userland, congratulations. :( stathz is running at 40hz, but userland will think it runs at 128, so if any code tries to actually use stathz directly (e.g. divide some stat counter by stathz, etc.) it will compute wrong results. > As for the style(9), I am not really sure that applies, the exact quote: > > > Space after keywords (if, while, for, return, switch). No braces (`{' > and `}') are used for control statements with zero or only a single > statement unless that statement is more than a single line in which case > they are permitted. Forever loops are done with for's, not while's. > > > To me the following if: > > if () > stmt1; > else > stmt2; > > falls into the category of statements with more than single line (3 in > this case), so that {} is appropriate. So that either my change is OK, > or style(9) needs to be clarified to include if/else explicitly. 1) I disagree with your interpretation. For one, 'else' is clearly not a statement by itself. In fact, if you check the BNF in "The C Programming Language", both "if (expression) statement" and "if (expression) statement else statement" are part of the "selection-statement" definition. So rather than 'else' being a statement, the entire thing is a single 'statement'. 2) The bigger rule is to be consistent within a file. Look at the 4 lines immediately preceding your change. -- John Baldwin