diff options
author | Marek Olšák <[email protected]> | 2018-10-01 15:51:06 -0400 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2018-10-06 22:05:58 -0400 |
commit | d877451b48a59ab0f9a4210fc736f51da5851c9a (patch) | |
tree | 267f260015d8ac2f9664c9d5c575bf0f66ee7e20 /src/util/u_queue.c | |
parent | 066aa44fc56d277b3932d124c4962106c6962863 (diff) |
util/u_queue: add UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY
Initial version discussed with Rob Clark under a different patch name.
This approach leaves his driver unaffected.
Diffstat (limited to 'src/util/u_queue.c')
-rw-r--r-- | src/util/u_queue.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/util/u_queue.c b/src/util/u_queue.c index 22d2cdd0fa2..3812c824b6d 100644 --- a/src/util/u_queue.c +++ b/src/util/u_queue.c @@ -239,6 +239,20 @@ util_queue_thread_func(void *input) free(input); +#ifdef HAVE_PTHREAD_SETAFFINITY + if (queue->flags & UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY) { + /* Don't inherit the thread affinity from the parent thread. + * Set the full mask. + */ + cpu_set_t cpuset; + CPU_ZERO(&cpuset); + for (unsigned i = 0; i < CPU_SETSIZE; i++) + CPU_SET(i, &cpuset); + + pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset); + } +#endif + if (strlen(queue->name) > 0) { char name[16]; util_snprintf(name, sizeof(name), "%s%i", queue->name, thread_index); |