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