Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Mar 2013 20:43:33 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        attilio@FreeBSD.org, Davide Italiano <davide@FreeBSD.org>, src-committers@FreeBSD.org, svn-src-projects@FreeBSD.org
Subject:   Re: svn commit: r247710 - projects/calloutng/sys/kern
Message-ID:  <20130305201211.M902@besplex.bde.org>
In-Reply-To: <201303041620.52100.jhb@freebsd.org>
References:  <201303031339.r23DdsBU047737@svn.freebsd.org> <201303041521.06557.jhb@freebsd.org> <CAJ-FndBvLD_fU1ZZ3cGNtChfdtXyuBRt4Z_ci8daS08ZYdOKzg@mail.gmail.com> <201303041620.52100.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 4 Mar 2013, John Baldwin wrote:

> On Monday, March 04, 2013 3:41:05 pm Attilio Rao wrote:
>> On Mon, Mar 4, 2013 at 9:21 PM, John Baldwin <jhb@freebsd.org> wrote:
>>> On Monday, March 04, 2013 3:17:30 pm Davide Italiano wrote:
>>>> On Mon, Mar 4, 2013 at 4:40 PM, John Baldwin <jhb@freebsd.org> wrote:
>>>>> On Sunday, March 03, 2013 8:39:54 am Davide Italiano wrote:
>>>>>> Author: davide
>>>>>> Date: Sun Mar  3 13:39:54 2013
>>>>>> New Revision: 247710
>>>>>> URL: http://svnweb.freebsd.org/changeset/base/247710
>>>>>>
>>>>>> Log:
>>>>>>   - Use TRUE/FALSE in lieu of 0/1 for boolean_t variables.

Style bug.

>>>>> We have stdbool in the kernel.  Why not use that instead of the Machish
>>>>> boolean_t?

Neither is BSDish.

I like(d) bool_t and TRUE/FALSE, and in 1993 when I didn't know BSD
style very well, I made the mistake  of exposing the Machish boolean_t
and TRUE/FALSE outside of vm.  It is now used a bit.

>>>> move to 'boolean_t'.
>>>> Honestly, I didn't argue due to the relative little relevance of the
>>>> change, but actually I find the type change more explicative.
>>>> I have no strong objections to change it again (in particular because
>>>> I think you're suggesting to use bool to be C99 compliant, feel free
>>>> to correct me if I'm wrong).
>>>>
>>>> While here. After closer looking I realized boolean_t is widely used
>>>> in the kernel (e.g. sys/kern/). Is this just a common error or is
>>>> there something I'm missing?

Not very widely used, especially in kern.  There are only 17 boolean_t's
in all of kern.  There are 33 TRUE's and 24 FALSE's in kern.  This is
approxiately none.  Since I like(d) bool_t, I used it in sio and there
are 15 uses of it there now (10 TRUE's and 8 FALSE's).  This uses my
old spelling from pre-C90 and pre-BSD, with a private typedef so that
it is portable.  The uart driver has different style bugs but not the
one of using bools.  It has no instances of boolean_t under any spelling,
5 of TRUE and 3 of FALSE>

This shows that it is an uncommon error to use boolean_t outside of vm.

>>> No, it's just older and bool is C99 as you noticed.  I had thought that
>>> boolean_t was largely regulated to code from Mach (i.e. sys/vm) and that
>>> we should use bool for new code.

That would be a large change.  BSD style doesn't even use the ! operator,
buit uses comparison with 0.

>> Actually boolean_t is much more widespread in our kernel than the C99
>> variant. Moreover style(9) doesn't advertise it either, neither the

Since boolean_t escaped earlier, and C99 extensions are rarely used.

>> necessity to conform to library defined C99 features (even if present
>> in the C99 standard, _Bool is still defined in stdbool.h which is an
>> header not present in our kernel).
>
> Err, I thought that mdf@ had proposed importing stdbool.h into our kernel
> already?  Ah, yes, the requisite bits are in <sys/types.h>, so 'bool' works
> fine.

Like boolean_t.  I made the mistake of putting it in sys/types.h instead of
in its own header so that it could be easily used.  In 4.4BSD-Lite2, it is
still only in the Machish header vm/vm_param.h.  NetBSD moved it to
sys/types.h in 2003.

> I think for new code we should prefer C99's bool to boolean_t.

Why?  There is no existing practice for this in the kernel.  There is some
in the Linux kernel :-).

Bruce



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