From 9385c592c68e7304cd9084fe17f27ec17319cdcf Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 4 Mar 2015 19:17:57 -0700 Subject: [PATCH] mapi: remove u_thread.h MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Just use c11 threads directly. Reviewed-by: Matt Turner Reviewed-by: José Fonseca --- 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 #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 #include #include +#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" -- 2.7.4