From 074450e2688d563dcc0ffe7d071fd36a29ab41e0 Mon Sep 17 00:00:00 2001 From: James Swaine Date: Fri, 20 Nov 2009 16:41:07 +0000 Subject: [PATCH] fixed futures (processor-count) on OS X (was previously always returning 1) svn: r16924 --- src/mzscheme/src/future.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/mzscheme/src/future.c b/src/mzscheme/src/future.c index 08f6e87064..c73134a218 100644 --- a/src/mzscheme/src/future.c +++ b/src/mzscheme/src/future.c @@ -612,6 +612,7 @@ Scheme_Object *touch(int argc, Scheme_Object *argv[]) #ifdef linux #include #elif OS_X +#include #include #elif WINDOWS #include @@ -625,24 +626,12 @@ Scheme_Object *processor_count(int argc, Scheme_Object *argv[]) #ifdef linux cpucount = sysconf(_SC_NPROCESSORS_ONLN); #elif OS_X - int mib[4]; - size_t len; + size_t size = sizeof(cpucount) ; - /* set the mib for hw.ncpu */ - mib[0] = CTL_HW; - mib[1] = HW_AVAILCPU; // alternatively, try HW_NCPU; - - /* get the number of CPUs from the system */ - sysctl(mib, 2, &cpucount, &len, NULL, 0); - if (cpucount < 1) - { - mib[1] = HW_NCPU; - sysctl(mib, 2, &cpucount, &len, NULL, 0); - if(cpucount < 1) - { - cpucount = 1; - } - } + if (sysctlbyname("hw.ncpu", &cpucount, &size, NULL, 0)) + { + cpucount = 1; + } #elif WINDOWS SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo);