aboutsummaryrefslogtreecommitdiff
path: root/libcxx
diff options
context:
space:
mode:
authorLouis Dionne <ldionne.2@gmail.com>2020-11-25 16:42:42 -0500
committerLouis Dionne <ldionne.2@gmail.com>2020-11-26 12:00:59 -0500
commit3d7f19ff182b249521061cff7a908efbc68d9f54 (patch)
tree5a0a23b7b2b10e88e3b1dbcdc398d96c5d28fb91 /libcxx
parentd7ca140c0122a55a4042fb263ea3baaa501c361d (diff)
downloadllvm-project-3d7f19ff182b249521061cff7a908efbc68d9f54.tar.gz
[libc++] Remove sysctl-based implementation of thread::hardware_concurrency()
Using sysctl requires including headers that are considered internal on Linux, like <sys/sysctl.h> & friends. Instead, sysconf is defined by POSIX (and we have a fallback for Windows), so all the systems we support should be happy with just sysconf. Differential Revision: https://reviews.llvm.org/D92135
Diffstat (limited to 'libcxx')
-rw-r--r--libcxx/src/thread.cpp22
1 files changed, 2 insertions, 20 deletions
diff --git a/libcxx/src/thread.cpp b/libcxx/src/thread.cpp
index e1dc972cba7f..5959d8b71103 100644
--- a/libcxx/src/thread.cpp
+++ b/libcxx/src/thread.cpp
@@ -15,20 +15,8 @@
#include "future"
#include "limits"
-#if __has_include(<sys/types.h>)
-# include <sys/types.h>
-#endif
-
-#if __has_include(<sys/param.h>)
-# include <sys/param.h>
-#endif
-
-#if __has_include(<sys/sysctl.h>)
-# include <sys/sysctl.h>
-#endif
-
#if __has_include(<unistd.h>)
-# include <unistd.h>
+# include <unistd.h> // for sysconf
#endif
#if defined(__NetBSD__)
@@ -84,13 +72,7 @@ thread::detach()
unsigned
thread::hardware_concurrency() _NOEXCEPT
{
-#if defined(CTL_HW) && defined(HW_NCPU)
- unsigned n;
- int mib[2] = {CTL_HW, HW_NCPU};
- std::size_t s = sizeof(n);
- sysctl(mib, 2, &n, &s, 0, 0);
- return n;
-#elif defined(_SC_NPROCESSORS_ONLN)
+#if defined(_SC_NPROCESSORS_ONLN)
long result = sysconf(_SC_NPROCESSORS_ONLN);
// sysconf returns -1 if the name is invalid, the option does not exist or
// does not have a definite limit.