diff options
author | Louis Dionne <ldionne.2@gmail.com> | 2020-11-25 16:42:42 -0500 |
---|---|---|
committer | Louis Dionne <ldionne.2@gmail.com> | 2020-11-26 12:00:59 -0500 |
commit | 3d7f19ff182b249521061cff7a908efbc68d9f54 (patch) | |
tree | 5a0a23b7b2b10e88e3b1dbcdc398d96c5d28fb91 /libcxx | |
parent | d7ca140c0122a55a4042fb263ea3baaa501c361d (diff) | |
download | llvm-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.cpp | 22 |
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. |