svn commit: r298933 - in head: share/man/man9 sys/amd64/include sys/dev/acpica sys/dev/drm2 sys/dev/drm2/i915 sys/kern sys/sys sys/x86/acpica sys/x86/x86

Bruce Evans brde at optusnet.com.au
Tue May 3 06:12:38 UTC 2016


On Mon, 2 May 2016, Pedro Giffuni wrote:
>
> On 05/02/16 15:52, John Baldwin wrote:
>> On Monday, May 02, 2016 11:45:41 AM Ngie Cooper wrote:
>>> 
>>>> On May 2, 2016, at 11:00, John Baldwin <jhb at FreeBSD.org> wrote:
>>>> 
>>>> Author: jhb
>>>> [... excessive quoting trimmed]
>>>> New Revision: 298933
>>>> URL: https://svnweb.freebsd.org/changeset/base/298933
>>>> 
>>>> Log:
>>>>  Add a new bus method to fetch device-specific CPU sets.
>>>> [... excessive quoting trimmed]
>>>> kernel
>>> 
>>> This broke the build with gcc: 
>>> https://jenkins.freebsd.org/job/FreeBSD_HEAD_amd64_gcc/1211/
>> 
>> I saw.  What is odd though is that my tinderbox builds all passed.  This 
>> might
>> be due to the recent howmany() changes since _bitset.h only needed 
>> <sys/types.h>
>> before but now needs <sys/param.h> (which is borderline to being pointless 
>> for
>> a _foo.h header).
>
> TBH, I thought so too, but I avoided applying such changes to headers,
> and I haven't touched _bitset.h,

_foo.h headers cannot use howmany() due to namespace pollution.

_bitset.h was already broken, unless it is supposed to be kernel-only --
it uses howmany().  It is kernel-only according to its documention --
bitset is only documented in kernel manpages (in a single unreadable one
than is linked ad nauseum).

It is otherwise fairly clean.  It defines the symbols BITSET_DEFINE,
BITSET_T_INITIALIZER, and BITSET_SET in the application namespace
This is not completely clean for a _foo.h header.  All other BITSET*
macros are already in bitset.h  I think only BITSET_DEFINE should be
in _bitset.h (for use declarations in other headers).

select.h avoids this problem by defining its own howmany() macro.  This
seems to be correct except for the bogus ifdef around the private macro.
This ifdef is a little more than a style bug (verboseness) -- it breaks
detection of other definitions that might be different.  Lexical
differences wouldn't matter, but it is easier to never have them.

Old versions of select polluted <sys.types.h>.  The select macros just
used howmany().  howmany() was in <sys/types.h> too.

Bruce


More information about the svn-src-all mailing list