Changeset 3180809 in rtems-libbsd for freebsd/sbin/pfctl/pfctl_altq.c

Timestamp:
12/05/21 21:27:33 (2 years ago)
Author:
Stefan Eßer <se@…>
Branches:
89db1bb27c9d52164a78dc2fda0a2ba9da0920ef
Children:
0051a32
Parents:
9794487
git-author:
Stefan Eßer <se@…> (12/05/21 21:27:33)
git-committer:
Sebastian Huber <sebastian.huber@…> (09/28/22 11:20:55)
Message:

sys/bitset.h: reduce visibility of BIT_* macros

Add two underscore characters "" to names of BIT_* and BITSET_*
macros to move them to the implementation name space and to prevent
a name space pollution due to BIT_* macros in 3rd party programs with
conflicting parameter signatures.

These prefixed macro names are used in kernel header files to define
macros in e.g. sched.h, sys/cpuset.h and sys/domainset.h.

If C programs are built with either -D_KERNEL (automatically passed
when building a kernel or kernel modules) or -D_WANT_FREENBSD_BITSET
(or this macros is defined in the source code before including the
bitset macros), then all macros are made visible with their previous
names, too. E.g., both BIT_SET() and BIT_SET() are visible with
either of _KERNEL or _WANT_FREEBSD_BITSET defined.

The main reason for this change is that some 3rd party sources
including sched.h have been found to contain conflicting BIT_*
macros.

As a work-around, parts of shed.h have been made conditional and
depend on _WITH_CPU_SET_T being set when sched.h is included.
Ports that expect the full functionality provided by sched.h need
to be built with -D_WITH_CPU_SET_T. But this leads to conflicts if
BIT_* macros are defined in that program, too.

This patch set makes all of sched.h visible again without this
parameter being passed and without any name space pollution due
to BIT_* macros becoming visible when sched.h is included.

This patch set will be backported to the STABLE branches, but ports
will need to use -D_WITH_CPU_SET_T as long as there are supported
releases that do not contain these patches.

Reviewed by: kib, markj
MFC after: 1 month
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D33235

(No files)

Note: See TracChangeset for help on using the changeset viewer.