Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Dec 2011 09:07:18 -0500 (EST)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        David Schultz <das@FreeBSD.ORG>
Cc:        Zack Kirsch <zack@FreeBSD.ORG>, mdf@FreeBSD.ORG, John Baldwin <jhb@FreeBSD.ORG>, freebsd-arch@FreeBSD.ORG
Subject:   Re: Use of bool / stdbool.h in kernel
Message-ID:  <1697386241.723355.1322748438341.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <20111201014944.GA78010@zim.MIT.EDU>

next in thread | previous in thread | raw e-mail | index | archive | help
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.
> 
If this is added, would the style gods approve of the following:

(A) bool test_func();

    if (test_func())
           ...

instead of:

(B) int test_func();

    if (test_func() != 0)
           ...

Personally, I prefer the former, but understand that it isn't
currently style(9) compliant. Being able to do (A) instead of
(B) would be why I'd like stdbool.h to be added to the kernel,
if it will be allowed after the change?

rick




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1697386241.723355.1322748438341.JavaMail.root>