From: Marek Olšák <marek.ol...@amd.com> --- src/util/u_thread.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/util/u_thread.h b/src/util/u_thread.h index ec0d9a7..0c20ebb 100644 --- a/src/util/u_thread.h +++ b/src/util/u_thread.h @@ -29,20 +29,23 @@ #include <stdint.h> #include <stdbool.h> #include "c11/threads.h" #ifdef HAVE_PTHREAD #include <signal.h> #endif +#if defined(HAVE_PTHREAD) && !defined(ANDROID) +#define HAVE_PTHREAD_SETAFFINITY +#endif static inline thrd_t u_thread_create(int (*routine)(void *), void *param) { thrd_t thread; #ifdef HAVE_PTHREAD sigset_t saved_set, new_set; int ret; sigfillset(&new_set); pthread_sigmask(SIG_SETMASK, &new_set, &saved_set); @@ -76,41 +79,41 @@ static inline void u_thread_setname( const char *name ) * is very expensive. It's desirable to pin a group of closely cooperating * threads to one group of cores sharing L3. * * \param thread thread * \param L3_index index of the L3 cache * \param cores_per_L3 number of CPU cores shared by one L3 */ static inline void util_pin_thread_to_L3(thrd_t thread, unsigned L3_index, unsigned cores_per_L3) { -#if defined(HAVE_PTHREAD) +#if defined(HAVE_PTHREAD_SETAFFINITY) cpu_set_t cpuset; CPU_ZERO(&cpuset); for (unsigned i = 0; i < cores_per_L3; i++) CPU_SET(L3_index * cores_per_L3 + i, &cpuset); pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset); #endif } /** * Return the index of L3 that the thread is pinned to. If the thread is * pinned to multiple L3 caches, return -1. * * \param thread thread * \param cores_per_L3 number of CPU cores shared by one L3 */ static inline int util_get_L3_for_pinned_thread(thrd_t thread, unsigned cores_per_L3) { -#if defined(HAVE_PTHREAD) +#if defined(HAVE_PTHREAD_SETAFFINITY) cpu_set_t cpuset; if (pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset) == 0) { int L3_index = -1; for (unsigned i = 0; i < CPU_SETSIZE; i++) { if (CPU_ISSET(i, &cpuset)) { int x = i / cores_per_L3; if (L3_index != x) { -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev