From 2fba0aaa700bbdef37ac5da6da005b24be570e48 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Sun, 12 Jun 2016 13:36:39 +0200 Subject: gallium/u_queue: add an option to name threads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit for debugging v2: correct the snprintf use Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/util/u_queue.c | 9 +++++++++ src/gallium/auxiliary/util/u_queue.h | 2 ++ 2 files changed, 11 insertions(+) (limited to 'src/gallium/auxiliary/util') diff --git a/src/gallium/auxiliary/util/u_queue.c b/src/gallium/auxiliary/util/u_queue.c index a958c04d5db..de0422a0c13 100644 --- a/src/gallium/auxiliary/util/u_queue.c +++ b/src/gallium/auxiliary/util/u_queue.c @@ -26,6 +26,7 @@ #include "u_queue.h" #include "u_memory.h" +#include "u_string.h" #include "os/os_time.h" static void @@ -61,6 +62,12 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input) FREE(input); + if (queue->name) { + char name[16]; + util_snprintf(name, sizeof(name), "%s:%i", queue->name, thread_index); + pipe_thread_setname(name); + } + while (1) { struct util_queue_job job; @@ -96,6 +103,7 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input) bool util_queue_init(struct util_queue *queue, + const char *name, unsigned max_jobs, unsigned num_threads, void (*execute_job)(void *, int)) @@ -103,6 +111,7 @@ util_queue_init(struct util_queue *queue, unsigned i; memset(queue, 0, sizeof(*queue)); + queue->name = name; queue->num_threads = num_threads; queue->max_jobs = max_jobs; diff --git a/src/gallium/auxiliary/util/u_queue.h b/src/gallium/auxiliary/util/u_queue.h index f3aa4f6f5c6..f005ad5ef4c 100644 --- a/src/gallium/auxiliary/util/u_queue.h +++ b/src/gallium/auxiliary/util/u_queue.h @@ -51,6 +51,7 @@ struct util_queue_job { /* Put this into your context. */ struct util_queue { + const char *name; pipe_mutex lock; pipe_semaphore has_space; pipe_semaphore queued; @@ -64,6 +65,7 @@ struct util_queue { }; bool util_queue_init(struct util_queue *queue, + const char *name, unsigned max_jobs, unsigned num_threads, void (*execute_job)(void *, int)); -- cgit v1.2.3