From owner-freebsd-arch@FreeBSD.ORG Thu Dec 1 02:08:46 2011 Return-Path: Delivered-To: freebsd-arch@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC4E6106564A; Thu, 1 Dec 2011 02:08:46 +0000 (UTC) (envelope-from das@FreeBSD.ORG) Received: from zim.MIT.EDU (ZIM.MIT.EDU [18.95.3.101]) by mx1.freebsd.org (Postfix) with ESMTP id 8F7E08FC12; Thu, 1 Dec 2011 02:08:46 +0000 (UTC) Received: from zim.MIT.EDU (localhost [127.0.0.1]) by zim.MIT.EDU (8.14.5/8.14.2) with ESMTP id pB11niCM078204; Wed, 30 Nov 2011 20:49:44 -0500 (EST) (envelope-from das@FreeBSD.ORG) Received: (from das@localhost) by zim.MIT.EDU (8.14.5/8.14.2/Submit) id pB11nixZ078203; Wed, 30 Nov 2011 20:49:44 -0500 (EST) (envelope-from das@FreeBSD.ORG) Date: Wed, 30 Nov 2011 20:49:44 -0500 From: David Schultz To: John Baldwin Message-ID: <20111201014944.GA78010@zim.MIT.EDU> Mail-Followup-To: John Baldwin , freebsd-arch@freebsd.org, Zack Kirsch , mdf@freebsd.org References: <20111130154604.B949@besplex.bde.org> <201111301032.04102.jhb@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201111301032.04102.jhb@freebsd.org> Cc: Zack Kirsch , mdf@FreeBSD.ORG, freebsd-arch@FreeBSD.ORG Subject: Re: Use of bool / stdbool.h in kernel X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Dec 2011 02:08:46 -0000 On Wed, Nov 30, 2011, John Baldwin wrote: > On Wednesday, November 30, 2011 12:13:53 am Bruce Evans wrote: > > On Tue, 29 Nov 2011 mdf@freebsd.org wrote: > > > > > At $WORK we have a hack in one of the *.mk files to allow including > > > stdbool.h in the kernel and we use it extensively. This is not > > > allowed by style(9), as far as I can tell, because the file is in > > > include/stdbool.h and those files are not allowed to be included in > > > kernel sources. > > > > Including stdbool.h in the kernel is not a style bug, but unsupported. > > > > > What I want to check on is, would it be acceptable to move stdbool.h > > > from include/stdbool.h to sys/sys/stdbool.h (i.e. like errno.h) and > > > then include it in the kernel as ? That is, is the > > > > Would be a larger style bug, especially if it were actually used. > > Even its spellings of TRUE and FALSE are strange. Even in userland > > stdbool.h is considered so useful that it is never used in src/bin > > and is only used a few times on other src/*bin. src/bin never uses > > TRUE of FALSE either. > > I suspect there is some bias here though due to the fact that there wasn't > a standard bool type when most of this code was written. :) I don't think > that means we have to forgo use of the new type now that it is in fact > standardized in C99. I would be happy to have 'bool' available and the > lowercase 'true' and 'false' are fine with me. The lowercase 'true' and 'false' are intended to mimic C++, where they are keywords. Regardless of how you prefer to capitalize them, using them instead of 0 and 1 makes the intent much clearer. This is especially true in the kernel, where non-zero could mean true, or it could be an error code. Unfortunately, the "new type" is mostly useless, aside from improving readability. Unlike modern languages, C doesn't consider it a compile-time error to mix up bools and ints.