mirror of
https://github.com/anrieff/libcpuid
synced 2024-12-16 16:35:45 +00:00
Use popcount64 from libc when available (#152)
* Use popcount64 from libc when available Without this, we get a compiler error on NetBSD because the one in libc has a slightly different prototype. libcpuid_util.c:78:12: error: conflicting types for 'popcount64' 78 | static int popcount64(uint64_t mask) | ^~~~~~~~~~ In file included from /nix/store/155rj8nqh3xd80vpa8hl35p3hk7pacys-include-netbsd-8.0/include/string.h:98, from libcpuid_util.c:30: /nix/store/155rj8nqh3xd80vpa8hl35p3hk7pacys-include-netbsd-8.0/include/strings.h:61:14: note: previous declaration of 'popcount64' was here 61 | unsigned int popcount64(__uint64_t) __constfunc; | ^~~~~~~~~~ * Return unsigned int from popcount64 Matches NetBSD libc, where popcount64 originates.
This commit is contained in:
parent
ae7b063c8a
commit
1acaf9980b
2 changed files with 9 additions and 2 deletions
|
@ -43,6 +43,8 @@ LT_INIT
|
|||
AM_CPPFLAGS="$CPPFLAGS"
|
||||
|
||||
AC_CHECK_HEADERS([stdint.h])
|
||||
AC_CHECK_FUNCS([popcount64])
|
||||
|
||||
AC_CHECK_PROGS([DOXYGEN], [doxygen])
|
||||
AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])
|
||||
|
||||
|
|
|
@ -29,6 +29,9 @@
|
|||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include "libcpuid.h"
|
||||
#include "libcpuid_util.h"
|
||||
|
||||
|
@ -74,9 +77,10 @@ void debugf(int verboselevel, const char* format, ...)
|
|||
_warn_fun(buff);
|
||||
}
|
||||
|
||||
static int popcount64(uint64_t mask)
|
||||
#ifndef HAVE_POPCOUNT64
|
||||
static unsigned int popcount64(uint64_t mask)
|
||||
{
|
||||
int num_set_bits = 0;
|
||||
unsigned int num_set_bits = 0;
|
||||
|
||||
while (mask) {
|
||||
mask &= mask - 1;
|
||||
|
@ -85,6 +89,7 @@ static int popcount64(uint64_t mask)
|
|||
|
||||
return num_set_bits;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int score(const struct match_entry_t* entry, const struct cpu_id_t* data,
|
||||
int brand_code, uint64_t bits, int model_code)
|
||||
|
|
Loading…
Reference in a new issue