[Mesa-dev] [PATCH v3 2/2] GLX_TLS: use TLS macros when define those TLS variables.

zhigang.gong at linux.intel.com zhigang.gong at linux.intel.com
Wed Feb 15 03:41:31 PST 2012


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



More information about the mesa-dev mailing list