summaryrefslogtreecommitdiff
path: root/thread-utils.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-03-20 13:11:49 -0700
committerJunio C Hamano <gitster@pobox.com>2015-03-20 13:11:49 -0700
commit551fc7aec1a7efe868a59fbeea14582b41923f4d (patch)
treed61c1f84583a496e2a4276c840fe4a8b867f9487 /thread-utils.c
parentec0465ade87996214959a393239eec520daf92ea (diff)
parenta25b5a32c76630f2433b860fef7bc28a9380a8f6 (diff)
downloadgit-551fc7aec1a7efe868a59fbeea14582b41923f4d.tar.gz
Merge branch 'km/bsd-sysctl'
We now detect number of CPUs on older BSD-derived systems. * km/bsd-sysctl: thread-utils.c: detect CPU count on older BSD-like systems configure: support HAVE_BSD_SYSCTL option
Diffstat (limited to 'thread-utils.c')
-rw-r--r--thread-utils.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/thread-utils.c b/thread-utils.c
index 97396a75ae..a2135e0743 100644
--- a/thread-utils.c
+++ b/thread-utils.c
@@ -35,7 +35,23 @@ int online_cpus(void)
if (!pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0))
return (int)psd.psd_proc_cnt;
-#endif
+#elif defined(HAVE_BSD_SYSCTL) && defined(HW_NCPU)
+ int mib[2];
+ size_t len;
+ int cpucount;
+
+ mib[0] = CTL_HW;
+# ifdef HW_AVAILCPU
+ mib[1] = HW_AVAILCPU;
+ len = sizeof(cpucount);
+ if (!sysctl(mib, 2, &cpucount, &len, NULL, 0))
+ return cpucount;
+# endif /* HW_AVAILCPU */
+ mib[1] = HW_NCPU;
+ len = sizeof(cpucount);
+ if (!sysctl(mib, 2, &cpucount, &len, NULL, 0))
+ return cpucount;
+#endif /* defined(HAVE_BSD_SYSCTL) && defined(HW_NCPU) */
#ifdef _SC_NPROCESSORS_ONLN
if ((ncpus = (long)sysconf(_SC_NPROCESSORS_ONLN)) > 0)