[Mesa-dev] [PATCH 4/6] gallium/u_queue: add an option to name threads

Nicolai Hähnle nhaehnle at gmail.com
Tue Jun 21 14:40:47 UTC 2016


On 21.06.2016 14:17, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> for debugging
> ---
>   src/gallium/auxiliary/util/u_queue.c              | 10 ++++++++++
>   src/gallium/auxiliary/util/u_queue.h              |  2 ++
>   src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c     |  2 +-
>   src/gallium/winsys/radeon/drm/radeon_drm_winsys.c |  2 +-
>   4 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_queue.c b/src/gallium/auxiliary/util/u_queue.c
> index d14d850..a0b0317 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,13 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input)
>
>      FREE(input);
>
> +   if (queue->name) {
> +      char name[16] = {0};
> +      util_snprintf(name, sizeof(name) - 1, "%s:%i",
> +                    queue->name, thread_index);

It should be safe to just say util_snprintf(name, sizeof(name), ...) 
without initializing name.

Nicolai

> +      pipe_thread_setname(name);
> +   }
> +
>      while (1) {
>         struct util_queue_job job;
>
> @@ -96,6 +104,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 +112,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 f3aa4f6..f005ad5 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));
> diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
> index 22a8122..8782665 100644
> --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
> +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
> @@ -493,7 +493,7 @@ amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create)
>      pipe_mutex_init(ws->bo_fence_lock);
>
>      if (sysconf(_SC_NPROCESSORS_ONLN) > 1 && debug_get_option_thread())
> -      util_queue_init(&ws->cs_queue, 8, 1, amdgpu_cs_submit_ib);
> +      util_queue_init(&ws->cs_queue, "amdgpu_cs", 8, 1, amdgpu_cs_submit_ib);
>
>      /* Create the screen at the end. The winsys must be initialized
>       * completely.
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> index 32d58b9..ea5d212 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> @@ -783,7 +783,7 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create)
>       ws->info.gart_page_size = sysconf(_SC_PAGESIZE);
>
>       if (ws->num_cpus > 1 && debug_get_option_thread())
> -        util_queue_init(&ws->cs_queue, 8, 1,
> +        util_queue_init(&ws->cs_queue, "radeon_cs", 8, 1,
>                           radeon_drm_cs_emit_ioctl_oneshot);
>
>       /* Create the screen at the end. The winsys must be initialized
>


More information about the mesa-dev mailing list