detect windows cpus

pull/112/head
Dave Vasilevsky 6 months ago
parent 670ddc7c90
commit cb961a54b0

@ -68,7 +68,8 @@ AC_SYS_LARGEFILE
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_FUNC_STRTOD
AC_CHECK_FUNCS([memchr memmove memset strerror strtol sched_getaffinity])
AC_CHECK_FUNCS([memchr memmove memset strerror strtol sched_getaffinity sysconf
GetSystemInfo])
AC_CHECK_HEADER([sys/endian.h],
[
AC_CHECK_DECLS([htole64, le64toh], [], [], [

@ -1,28 +1,35 @@
#define _GNU_SOURCE
#include <unistd.h>
#include "config.h"
#ifdef HAVE_SCHED_GETAFFINITY
#include <sched.h>
#include <stdio.h>
#endif
#ifdef HAVE_SYSCONF
#include <unistd.h>
#endif
#ifdef HAVE_GETSYSTEMINFO
#include <sysinfoapi.h>
#endif
size_t num_threads(void) {
#ifdef HAVE_SCHED_GETAFFINITY
cpu_set_t cpu_set;
CPU_ZERO(&cpu_set);
if (sched_getaffinity(0, sizeof cpu_set, &cpu_set) == -1)
return sysconf(_SC_NPROCESSORS_ONLN);
else
if (sched_getaffinity(0, sizeof cpu_set, &cpu_set) == 0)
return CPU_COUNT(&cpu_set);
}
#else
#endif
size_t num_threads(void) {
#ifdef HAVE_SYSCONF
return sysconf(_SC_NPROCESSORS_ONLN);
}
#elif HAVE_GETSYSTEMINFO
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
return sysinfo.dwNumberOfProcessors;
#else
#warning "No processor-detection enabled! Assuming 2 CPUs"
return 2;
#endif
}

Loading…
Cancel
Save