[Mesa-dev] [PATCH 7/7] mapi: remove u_thread.h

Brian Paul brianp at vmware.com
Wed Mar 4 18:19:31 PST 2015


Just use c11 threads directly.
---
 src/mapi/Makefile.sources |  3 +--
 src/mapi/glapi/glapi.h    |  1 -
 src/mapi/mapi.c           |  1 -
 src/mapi/stub.c           | 14 +++-----------
 src/mapi/u_current.c      | 28 ++++++++++++++--------------
 src/mapi/u_execmem.c      |  2 +-
 6 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/src/mapi/Makefile.sources b/src/mapi/Makefile.sources
index 4e92f5e..07063f3 100644
--- a/src/mapi/Makefile.sources
+++ b/src/mapi/Makefile.sources
@@ -18,8 +18,7 @@ MAPI_UTIL_FILES = \
 	u_current.c \
 	u_current.h \
 	u_execmem.c \
-	u_execmem.h \
-	u_thread.h
+	u_execmem.h
 
 MAPI_BRIDGE_FILES = \
 	entry.c \
diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h
index b2d6632..8d991fb 100644
--- a/src/mapi/glapi/glapi.h
+++ b/src/mapi/glapi/glapi.h
@@ -45,7 +45,6 @@
 #define _GLAPI_H
 
 #include "util/macros.h"
-#include "u_thread.h"
 
 
 #ifdef __cplusplus
diff --git a/src/mapi/mapi.c b/src/mapi/mapi.c
index aa6b91b..c235adc 100644
--- a/src/mapi/mapi.c
+++ b/src/mapi/mapi.c
@@ -29,7 +29,6 @@
 #include <string.h>
 
 #include "u_current.h"
-#include "u_thread.h"
 #include "mapi.h"
 #include "stub.h"
 #include "table.h"
diff --git a/src/mapi/stub.c b/src/mapi/stub.c
index 953b6c7..05436ba 100644
--- a/src/mapi/stub.c
+++ b/src/mapi/stub.c
@@ -28,10 +28,10 @@
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
+#include "c11/threads.h"
 
 #include "util/macros.h"
 #include "u_current.h"
-#include "u_thread.h"
 #include "entry.h"
 #include "stub.h"
 #include "table.h"
@@ -54,16 +54,8 @@ static int next_dynamic_slot = MAPI_TABLE_NUM_STATIC;
 void
 stub_init_once(void)
 {
-#ifdef HAVE_PTHREAD
-   static pthread_once_t once = PTHREAD_ONCE_INIT;
-   pthread_once(&once, entry_patch_public);
-#else
-   static int first = 1;
-   if (first) {
-      first = 0;
-      entry_patch_public();
-   }
-#endif
+   static once_flag flag = ONCE_FLAG_INIT;
+   call_once(&flag, entry_patch_public);
 }
 
 static int
diff --git a/src/mapi/u_current.c b/src/mapi/u_current.c
index 0365724..7e7e275 100644
--- a/src/mapi/u_current.c
+++ b/src/mapi/u_current.c
@@ -48,8 +48,8 @@
  *                 drivers!  No changes to the public glapi interface.
  */
 
+#include "c11/threads.h"
 #include "u_current.h"
-#include "u_thread.h"
 
 #ifndef MAPI_MODE_UTIL
 
@@ -112,8 +112,8 @@ struct mapi_table *u_current_table =
    (struct mapi_table *) table_noop_array;
 void *u_current_context;
 
-struct u_tsd u_current_table_tsd;
-static struct u_tsd u_current_context_tsd;
+tss_t u_current_table_tsd;
+static tss_t u_current_context_tsd;
 static int ThreadSafe;
 
 #endif /* defined(GLX_USE_TLS) */
@@ -124,8 +124,8 @@ void
 u_current_destroy(void)
 {
 #if !defined(GLX_USE_TLS)
-   u_tsd_destroy(&u_current_table_tsd);
-   u_tsd_destroy(&u_current_context_tsd);
+   tss_delete(u_current_table_tsd);
+   tss_delete(u_current_context_tsd);
 #endif
 }
 
@@ -135,8 +135,8 @@ u_current_destroy(void)
 static void
 u_current_init_tsd(void)
 {
-   u_tsd_init(&u_current_table_tsd);
-   u_tsd_init(&u_current_context_tsd);
+   tss_create(&u_current_table_tsd, NULL);
+   tss_create(&u_current_context_tsd, NULL);
 }
 
 /**
@@ -233,7 +233,7 @@ u_current_set_context(const void *ptr)
 #if defined(GLX_USE_TLS)
    u_current_context = (void *) ptr;
 #else
-   u_tsd_set(&u_current_context_tsd, (void *) ptr);
+   tss_set(u_current_context_tsd, (void *) ptr);
    u_current_context = (ThreadSafe) ? NULL : (void *) ptr;
 #endif
 }
@@ -249,9 +249,7 @@ u_current_get_context_internal(void)
 #if defined(GLX_USE_TLS)
    return u_current_context;
 #else
-   return (ThreadSafe)
-      ? u_tsd_get(&u_current_context_tsd)
-      : u_current_context;
+   return ThreadSafe ? tss_get(u_current_context_tsd) : u_current_context;
 #endif
 }
 
@@ -273,7 +271,7 @@ u_current_set_table(const struct mapi_table *tbl)
 #if defined(GLX_USE_TLS)
    u_current_table = (struct mapi_table *) tbl;
 #else
-   u_tsd_set(&u_current_table_tsd, (void *) tbl);
+   tss_set(u_current_table_tsd, (void *) tbl);
    u_current_table = (ThreadSafe) ? NULL : (void *) tbl;
 #endif
 }
@@ -287,7 +285,9 @@ u_current_get_table_internal(void)
 #if defined(GLX_USE_TLS)
    return u_current_table;
 #else
-   return (struct mapi_table *) ((ThreadSafe) ?
-         u_tsd_get(&u_current_table_tsd) : (void *) u_current_table);
+   if (ThreadSafe)
+      return (struct mapi_table *) tss_get(u_current_table_tsd);
+   else
+      return (struct mapi_table *) u_current_table;
 #endif
 }
diff --git a/src/mapi/u_execmem.c b/src/mapi/u_execmem.c
index ad6427b..89d5c1d 100644
--- a/src/mapi/u_execmem.c
+++ b/src/mapi/u_execmem.c
@@ -33,7 +33,7 @@
 
 
 #include "c99_compat.h"
-#include "u_thread.h"
+#include "c11/threads.h"
 #include "u_execmem.h"
 
 
-- 
1.9.1



More information about the mesa-dev mailing list