From owner-svn-src-projects@FreeBSD.ORG Tue Mar 5 12:05:46 2013 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E9AFC8C7; Tue, 5 Mar 2013 12:05:46 +0000 (UTC) (envelope-from hps@bitfrost.no) Received: from mta.bitpro.no (mta.bitpro.no [92.42.64.202]) by mx1.freebsd.org (Postfix) with ESMTP id 6962CA00; Tue, 5 Mar 2013 12:05:46 +0000 (UTC) Received: from mail.bitfrost.no (mail.bitfrost.no [46.29.221.36]) by mta.bitpro.no (Postfix) with ESMTP id AE4F97A0D7; Tue, 5 Mar 2013 13:05:38 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at bitfrost.no Received: from laptop015.hselasky.homeunix.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: hanspetter) by mail.bitfrost.no (Postfix) with ESMTPSA id 14BDB2A0E2; Tue, 5 Mar 2013 13:05:32 +0100 (CET) Message-ID: <5135DFD5.5050708@bitfrost.no> Date: Tue, 05 Mar 2013 13:06:45 +0100 From: Hans Petter Selasky Organization: Bitfrost A/S MIME-Version: 1.0 To: Bruce Evans Subject: Re: svn commit: r247710 - projects/calloutng/sys/kern References: <201303031339.r23DdsBU047737@svn.freebsd.org> <201303041521.06557.jhb@freebsd.org> <201303041620.52100.jhb@freebsd.org> <20130305201211.M902@besplex.bde.org> <20130305094819.GI48089@FreeBSD.org> <20130305214655.C1224@besplex.bde.org> In-Reply-To: <20130305214655.C1224@besplex.bde.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Davide Italiano , src-committers@FreeBSD.org, John Baldwin , attilio@FreeBSD.org, Gleb Smirnoff , svn-src-projects@FreeBSD.org X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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: Tue, 05 Mar 2013 12:05:47 -0000 On 03/05/13 12:21, Bruce Evans wrote: > On Tue, 5 Mar 2013, Gleb Smirnoff wrote: > >> On Tue, Mar 05, 2013 at 08:43:33PM +1100, Bruce Evans wrote: >> B> > I think for new code we should prefer C99's bool to boolean_t. >> B> >> B> Why? There is no existing practice for this in the kernel. There >> is some >> B> in the Linux kernel :-). >> >> Why? Because it is standard. What for? To make it more easy for newcomers >> to start hacking on FreeBSD kernel. > > I think you mean "harder". Now the newcomers need to know: > - the old method, which is used in most places > - the new method > - style rules for old, new and mixed methods > - arcane C99 points like whether bool can be used in bit-fields (I had to > look this up to check it. It can). > > I now see technical reasons to never use bool in kernel or other low-level > code. It will cause minor pessimizations converting nonzero to true (1) > at runtime, and for converting bool to register_t when passing parameters > (bool is 1 byte on x86). To use bool in structs (when not packing it into > bit-fields), we need to know too much about its size to pack it properly... > > Bruce Hi, I'm not sure how good you all are at C99. There is a subtle difference between bool (compiler type) and boolean_t (typedef'ed), and that is when assigning an non-bool value. This is probably bad style, but I just want to show you the difference: #include #include typedef int boolean_t; int main() { bool var1; var1 = 3; printf("%d\n", var1); boolean_t var2; var2 = 3; printf("%d\n", var2); return (0); } If defined correctly, var1 should contain a value of "1", and var2 should contain a value of "3". Now if for some reason someone like possibly some Linux guys do, use booleans for counting, you will have an instant error :-) I'm not saying we should take their example, but anyhow, be warned about the difference between bool and boolean_t! --HPS