iAdd function get_cpu_count.
This commit is contained in:
1 parent
a85188985e
commit
f52a3129a7
1 file changed
+34
@@ -30,3 +30,37 @@ static void test_function(const char str[], size_t n, void (*func)(size_t))
|
|||||||
end = (end - start) / 1000U;
|
end = (end - start) / 1000U;
|
||||||
printf ("%s %Lu ms for n = %lu\n", str, end, n);
|
printf ("%s %Lu ms for n = %lu\n", str, end, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
# include <windows.h>
|
||||||
|
#elif (defined(__APPLE__) && defined(__MACH__)) \
|
||||||
|
|| defined(__DragonFly__) || defined(__FreeBSD__) \
|
||||||
|
|| defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
|
# include <sys/param.h>
|
||||||
|
# include <sys/sysctl.h>
|
||||||
|
# define USE_SYSCTL
|
||||||
|
#else
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Return the number of CPU of the system */
|
||||||
|
static inline int get_cpu_count(void)
|
||||||
|
{
|
||||||
|
#if defined(_WIN32)
|
||||||
|
SYSTEM_INFO sysinfo;
|
||||||
|
GetSystemInfo(&sysinfo);
|
||||||
|
return sysinfo.dwNumberOfProcessors;
|
||||||
|
#elif defined(USE_SYSCTL)
|
||||||
|
int nm[2];
|
||||||
|
int count = 0;
|
||||||
|
size_t len = sizeof (count);
|
||||||
|
nm[0] = CTL_HW;
|
||||||
|
nm[1] = HW_NCPU;
|
||||||
|
sysctl(nm, 2, &count, &len, NULL, 0);
|
||||||
|
return MAX(1, count);
|
||||||
|
#elif defined (_SC_NPROCESSORS_ONLN)
|
||||||
|
return sysconf(_SC_NPROCESSORS_ONLN);
|
||||||
|
#else
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
Reference in new issue
Block a user