diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mapi/Makefile.sources | 3 | ||||
-rw-r--r-- | src/mapi/glapi/glapi.h | 1 | ||||
-rw-r--r-- | src/mapi/mapi.c | 1 | ||||
-rw-r--r-- | src/mapi/stub.c | 14 | ||||
-rw-r--r-- | src/mapi/u_current.c | 28 | ||||
-rw-r--r-- | 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 4e92f5edfeb..07063f390c9 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 b2d6632493c..8d991fb3b8a 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 aa6b91b42c7..c235adc4ab3 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 953b6c75c31..05436bab6d3 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 036572483c2..7e7e275f2e3 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 ad6427b3e43..89d5c1d08d5 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" |