util: Move os_misc to util
[mesa.git] / src / util / u_queue.c
index 72ce1fc00a689e34cda2e3fabac11f634d92da0c..3812c824b6dab14a8586434dc12b6f10faddbfea 100644 (file)
@@ -31,7 +31,7 @@
 #include "util/os_time.h"
 #include "util/u_string.h"
 #include "util/u_thread.h"
-#include "process.h"
+#include "u_process.h"
 
 static void util_queue_killall_and_wait(struct util_queue *queue);
 
@@ -239,10 +239,23 @@ util_queue_thread_func(void *input)
 
    free(input);
 
-   if (queue->name) {
+#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);
-      puts(name);
       u_thread_setname(name);
    }
 
@@ -323,10 +336,10 @@ util_queue_init(struct util_queue *queue,
    memset(queue, 0, sizeof(*queue));
 
    if (process_len) {
-      snprintf(queue->name, sizeof(queue->name), "%.*s:%s",
-               process_len, process_name, name);
+      util_snprintf(queue->name, sizeof(queue->name), "%.*s:%s",
+                    process_len, process_name, name);
    } else {
-      snprintf(queue->name, sizeof(queue->name), "%s", name);
+      util_snprintf(queue->name, sizeof(queue->name), "%s", name);
    }
 
    queue->flags = flags;