Make the __bitcount*() functions unconditionally available, by moving

them out of the #if _BSD_VISIBLE block.  Other headers may depend on
__bitcount().  The dependencies can be a header not specified by
POSIX, and then namespace restrictions by _XOPEN_SOURCE are not
applicable, as it was reported.  Or, we might grow an implementation
of some POSIX facility using __bitcount(), which also should work.

Reported by:	Jason Schulz <schulz.j@gmail.com>
Discussed with:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
This commit is contained in:
Konstantin Belousov
2015-09-26 07:30:45 +00:00
parent 74d7b9a832
commit 873a0bd675
+4 -3
View File
@@ -290,9 +290,6 @@ typedef _Bool bool;
* The following are all things that really shouldn't exist in this header,
* since its purpose is to provide typedefs, not miscellaneous doodads.
*/
#if __BSD_VISIBLE
#include <sys/select.h>
#ifdef __POPCNT__
#define __bitcount64(x) __builtin_popcountll((__uint64_t)(x))
@@ -356,6 +353,10 @@ __bitcount64(__uint64_t _x)
#define __bitcount(x) __bitcount32((unsigned int)(x))
#endif
#if __BSD_VISIBLE
#include <sys/select.h>
/*
* minor() gives a cookie instead of an index since we don't want to
* change the meanings of bits 0-15 or waste time and space shifting