svn commit: r247710 - projects/calloutng/sys/kern

Bruce Evans brde at optusnet.com.au
Tue Mar 5 09:43:44 UTC 2013


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 at 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 at 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


More information about the svn-src-projects mailing list