summaryrefslogtreecommitdiffstats
path: root/src/mapi
diff options
context:
space:
mode:
Diffstat (limited to 'src/mapi')
-rw-r--r--src/mapi/Makefile.sources3
-rw-r--r--src/mapi/glapi/glapi.h1
-rw-r--r--src/mapi/mapi.c1
-rw-r--r--src/mapi/stub.c14
-rw-r--r--src/mapi/u_current.c28
-rw-r--r--src/mapi/u_execmem.c2
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"