This patch is to tackle with shortcomings in Android bionic libc. Even if setting cflag -D__USE__GNU and adding include of <sched.h> cpuset macros may become available, bionic libc does not support pthread_{g,s}etaffinity_np()
Wrappers to sched_{g,s]etaffinity() were found to here: www.spinics.net/lists/linux-rt-users/msg16928.html but I'm not sure that passing 0 as pid (the means "for the current process") would works to pin the thread and if sched_{g,s]etaffinity() makes sense. Feedback about opportunity to use wrappers implementation is appreciated, I have tested also the build with wrappers, but I need to know if it may work. For now preprocessor conditional is added to avoid following building errors: In file included from external/mesa/src/gallium/auxiliary/os/os_thread.h:42: external/mesa/src/util/u_thread.h:93:4: error: use of undeclared identifier 'pthread_setaffinity_np' pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset); ^~~~~~~~~~~~~~~~~~~~~~ ... In file included from external/mesa/src/gallium/auxiliary/os/os_thread.h:42: external/mesa/src/util/u_thread.h:110:8: error: use of undeclared identifier 'pthread_getaffinity_np' if (pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset) == 0) { ^ 2 errors generated. Fixes: 8d473f555a ("st/mesa: pin driver threads to a specific L3 cache on AMD Zen (v2)") --- src/util/u_thread.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/u_thread.h b/src/util/u_thread.h index ec0d9a7f36..7419dd7e2c 100644 --- a/src/util/u_thread.h +++ b/src/util/u_thread.h @@ -83,7 +83,7 @@ static inline void u_thread_setname( const char *name ) 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) && !defined(ANDROID) cpu_set_t cpuset; CPU_ZERO(&cpuset); @@ -103,7 +103,7 @@ util_pin_thread_to_L3(thrd_t thread, unsigned L3_index, unsigned cores_per_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) && !defined(ANDROID) cpu_set_t cpuset; if (pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset) == 0) { -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev