[Mesa-dev] [PATCH v3 2/2] GLX_TLS: use TLS macros when define those TLS variables.
tf (mobile)
tfogal at sci.utah.edu
Wed Feb 15 04:58:01 PST 2012
Personally i don't care much about non-autoconf builds, but as this relies on a -DTLS= setting during configuration time, it will break non-ac builds (which need tls), no?
Other than that, LGTM.
-tom
On 15.02.2012, at 12:41, zhigang.gong at linux.intel.com wrote:
> From: Zhigang Gong <zhigang.gong at linux.intel.com>
>
> Use the properate way detected in autoconf stage to define
> those TLS variables rather than using hard coded
> "attribute..."
>
> Signed-off-by: Zhigang Gong <zhigang.gong at linux.intel.com>
> ---
> src/egl/main/eglcurrent.c | 3 +--
> src/glx/glxclient.h | 3 +--
> src/glx/glxcurrent.c | 3 +--
> src/mapi/glapi/glapi.h | 6 ++----
> src/mapi/mapi/u_current.c | 6 ++----
> src/mapi/mapi/u_current.h | 6 ++----
> src/mesa/drivers/dri/common/dri_test.c | 6 ++----
> src/mesa/drivers/x11/glxapi.c | 3 +--
> 8 files changed, 12 insertions(+), 24 deletions(-)
>
> diff --git a/src/egl/main/eglcurrent.c b/src/egl/main/eglcurrent.c
> index 54fc4f7..bbd46ac 100644
> --- a/src/egl/main/eglcurrent.c
> +++ b/src/egl/main/eglcurrent.c
> @@ -51,8 +51,7 @@ static pthread_key_t _egl_TSD;
> static void (*_egl_FreeTSD)(_EGLThreadInfo *);
>
> #ifdef GLX_USE_TLS
> -static __thread const _EGLThreadInfo *_egl_TLS
> - __attribute__ ((tls_model("initial-exec")));
> +static TLS const _EGLThreadInfo * _egl_TLS;
> #endif
>
> static INLINE void _eglSetTSD(const _EGLThreadInfo *t)
> diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
> index f8ae450..06785df 100644
> --- a/src/glx/glxclient.h
> +++ b/src/glx/glxclient.h
> @@ -630,9 +630,8 @@ extern void __glXSetCurrentContext(struct glx_context * c);
>
> # if defined( GLX_USE_TLS )
>
> -extern __thread void *__glX_tls_Context
> - __attribute__ ((tls_model("initial-exec")));
>
> +extern TLS void *__glX_tls_Context;
> # define __glXGetCurrentContext() __glX_tls_Context
>
> # else
> diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c
> index c92a2fd..f295d2c 100644
> --- a/src/glx/glxcurrent.c
> +++ b/src/glx/glxcurrent.c
> @@ -86,8 +86,7 @@ _X_HIDDEN pthread_mutex_t __glXmutex = PTHREAD_MUTEX_INITIALIZER;
> * \b never be \c NULL. This is important! Because of this
> * \c __glXGetCurrentContext can be implemented as trivial macro.
> */
> -__thread void *__glX_tls_Context __attribute__ ((tls_model("initial-exec")))
> - = &dummyContext;
> +TLS void *__glX_tls_Context = &dummyContext;
>
> _X_HIDDEN void
> __glXSetCurrentContext(struct glx_context * c)
> diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h
> index f685475..ef69e64 100644
> --- a/src/mapi/glapi/glapi.h
> +++ b/src/mapi/glapi/glapi.h
> @@ -85,11 +85,9 @@ struct _glapi_table;
>
> #if defined (GLX_USE_TLS)
>
> -_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch
> - __attribute__((tls_model("initial-exec")));
> +_GLAPI_EXPORT extern TLS struct _glapi_table * _glapi_tls_Dispatch;
>
> -_GLAPI_EXPORT extern __thread void * _glapi_tls_Context
> - __attribute__((tls_model("initial-exec")));
> +_GLAPI_EXPORT extern TLS void * _glapi_tls_Context;
>
> _GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
> _GLAPI_EXPORT extern const void *_glapi_Context;
> diff --git a/src/mapi/mapi/u_current.c b/src/mapi/mapi/u_current.c
> index 21a07ab..f4e241e 100644
> --- a/src/mapi/mapi/u_current.c
> +++ b/src/mapi/mapi/u_current.c
> @@ -99,12 +99,10 @@ extern void (*__glapi_noop_table[])(void);
> /*@{*/
> #if defined(GLX_USE_TLS)
>
> -__thread struct mapi_table *u_current_table
> - __attribute__((tls_model("initial-exec")))
> +TLS struct mapi_table *u_current_table
> = (struct mapi_table *) table_noop_array;
>
> -__thread void *u_current_user
> - __attribute__((tls_model("initial-exec")));
> +TLS void *u_current_user;
>
> #else
>
> diff --git a/src/mapi/mapi/u_current.h b/src/mapi/mapi/u_current.h
> index f9cffd8..0584dc8 100644
> --- a/src/mapi/mapi/u_current.h
> +++ b/src/mapi/mapi/u_current.h
> @@ -30,11 +30,9 @@ struct mapi_table;
>
> #ifdef GLX_USE_TLS
>
> -extern __thread struct mapi_table *u_current_table
> - __attribute__((tls_model("initial-exec")));
> +extern TLS struct mapi_table *u_current_table;
>
> -extern __thread void *u_current_user
> - __attribute__((tls_model("initial-exec")));
> +extern TLS void *u_current_user;
>
> #else /* GLX_USE_TLS */
>
> diff --git a/src/mesa/drivers/dri/common/dri_test.c b/src/mesa/drivers/dri/common/dri_test.c
> index 793f0c3..aaad90c 100644
> --- a/src/mesa/drivers/dri/common/dri_test.c
> +++ b/src/mesa/drivers/dri/common/dri_test.c
> @@ -11,11 +11,9 @@ extern char __driDriverExtensions[];
>
> #if defined(GLX_USE_TLS)
>
> -PUBLIC __thread struct _glapi_table * _glapi_tls_Dispatch
> - __attribute__((tls_model("initial-exec")));
> +PUBLIC TLS struct _glapi_table * _glapi_tls_Dispatch;
>
> -PUBLIC __thread void * _glapi_tls_Context
> - __attribute__((tls_model("initial-exec")));
> +PUBLIC TLS void * _glapi_tls_Context;
>
> PUBLIC const struct _glapi_table *_glapi_Dispatch;
> PUBLIC const void *_glapi_Context;
> diff --git a/src/mesa/drivers/x11/glxapi.c b/src/mesa/drivers/x11/glxapi.c
> index 255a37b..57f3e9d 100644
> --- a/src/mesa/drivers/x11/glxapi.c
> +++ b/src/mesa/drivers/x11/glxapi.c
> @@ -159,8 +159,7 @@ get_dispatch(Display *dpy)
> * GLX API current context.
> */
> #if defined(GLX_USE_TLS)
> -PUBLIC __thread void * CurrentContext
> - __attribute__((tls_model("initial-exec")));
> +PUBLIC TLS void * CurrentContext;
> #elif defined(THREADS)
> static _glthread_TSD ContextTSD; /**< Per-thread context pointer */
> #else
> --
> 1.7.4.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list