[Mesa-dev] [PATCH 1/2] util: try to fix the Android build
Marek Olšák
maraeo at gmail.com
Sun Sep 9 01:02:18 UTC 2018
From: Marek Olšák <marek.olsak at 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
More information about the mesa-dev
mailing list