Date: Thu, 1 Dec 2011 10:07:23 -0500 From: John Baldwin <jhb@freebsd.org> To: David Schultz <das@freebsd.org> Cc: Zack Kirsch <zack@freebsd.org>, mdf@freebsd.org, freebsd-arch@freebsd.org Subject: Re: Use of bool / stdbool.h in kernel Message-ID: <201112011007.23430.jhb@freebsd.org> In-Reply-To: <20111201014944.GA78010@zim.MIT.EDU> References: <CAMBSHm_Be0hCimgg0KpCFs24MHOW=LBczJbFZ3F1cOaCgrS8LA@mail.gmail.com> <201111301032.04102.jhb@freebsd.org> <20111201014944.GA78010@zim.MIT.EDU>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, November 30, 2011 8:49:44 pm David Schultz wrote: > 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 <sys/stdbool.h>? 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. Yes, I consider it a readability aide and think it is fine as such. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112011007.23430.jhb>