On 05/03/15 02:19, Brian Paul wrote:
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"




Nice cleanup. Series is

Reviewed-by: Jose Fonseca <jfons...@vmware.com>

Jose
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to