[Mesa-dev] [PATCH] os, llvmpipe: Set rasterizer thread names on Linux.

Roland Scheidegger sroland at vmware.com
Fri Feb 13 07:23:14 PST 2015


Just one trivial issue, otherwise

Reviewed-by: Roland Scheidegger <sroland at vmware.com>


Am 13.02.2015 um 15:05 schrieb Jose Fonseca:
> To help identify llvmpipe rasterizer threads -- especially when there
> can be so many.
> 
> We can eventually generalize this to other OSes, but for that we must
> restrict the function to be called from the current thread.  See also
> http://stackoverflow.com/a/7989973
> ---
>  src/gallium/auxiliary/os/os_thread.h   | 11 +++++++++++
>  src/gallium/drivers/llvmpipe/lp_rast.c |  8 +++++++-
>  2 files changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/src/gallium/auxiliary/os/os_thread.h b/src/gallium/auxiliary/os/os_thread.h
> index ff46a89..d3f13d4 100644
> --- a/src/gallium/auxiliary/os/os_thread.h
> +++ b/src/gallium/auxiliary/os/os_thread.h
> @@ -85,6 +85,17 @@ static INLINE int pipe_thread_destroy( pipe_thread thread )
>     return thrd_detach( thread );
>  }
>  
> +static INLINE void pipe_thread_setname( const char *name )
> +{
> +#if defined(HAVE_PTHREAD)
> +#  if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && \
> +    (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 11))
Your link is saying glibc needs to be 2.12, not 2.11.


> +   pthread_setname_np(pthread_self(), name);
> +#  endif
> +#endif
> +   (void)name;
> +}
> +
>  
>  /* pipe_mutex
>   */
> diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
> index e168766..903e7c5 100644
> --- a/src/gallium/drivers/llvmpipe/lp_rast.c
> +++ b/src/gallium/drivers/llvmpipe/lp_rast.c
> @@ -31,6 +31,7 @@
>  #include "util/u_rect.h"
>  #include "util/u_surface.h"
>  #include "util/u_pack_color.h"
> +#include "util/u_string.h"
>  
>  #include "os/os_time.h"
>  
> @@ -747,11 +748,16 @@ static PIPE_THREAD_ROUTINE( thread_function, init_data )
>     struct lp_rasterizer_task *task = (struct lp_rasterizer_task *) init_data;
>     struct lp_rasterizer *rast = task->rast;
>     boolean debug = false;
> -   unsigned fpstate = util_fpstate_get();
> +   char thread_name[16];
> +   unsigned fpstate;
> +
> +   util_snprintf(thread_name, sizeof thread_name, "llvmpipe-%u", task->thread_index);
> +   pipe_thread_setname(thread_name);
>  
>     /* Make sure that denorms are treated like zeros. This is 
>      * the behavior required by D3D10. OpenGL doesn't care.
>      */
> +   fpstate = util_fpstate_get();
>     util_fpstate_set_denorms_to_zero(fpstate);
>  
>     while (1) {
> 



More information about the mesa-dev mailing list