summaryrefslogtreecommitdiffstats
path: root/Python/thread_pthread.h
diff options
context:
space:
mode:
authorKristján Valur Jónsson <kristjan@ccpgames.com>2010-09-20 02:11:49 (GMT)
committerKristján Valur Jónsson <kristjan@ccpgames.com>2010-09-20 02:11:49 (GMT)
commit2fea9b961d6ea1041ace66037513fcad1fc2173d (patch)
treeb01a6295a2711f72c1a2b5ce94fbfc0372636fc7 /Python/thread_pthread.h
parent3d8580f690d13817af941afe4958576e8d7922af (diff)
downloadcpython-2fea9b961d6ea1041ace66037513fcad1fc2173d.zip
cpython-2fea9b961d6ea1041ace66037513fcad1fc2173d.tar.gz
cpython-2fea9b961d6ea1041ace66037513fcad1fc2173d.tar.bz2
issue 9786 Native TLS support for pthreads
PyThread_create_key now has a failure mode that the applicatino can detect.
Diffstat (limited to 'Python/thread_pthread.h')
-rw-r--r--Python/thread_pthread.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index 5e52b39..a529b7a 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -558,3 +558,46 @@ _pythread_pthread_set_stacksize(size_t size)
}
#define THREAD_SET_STACKSIZE(x) _pythread_pthread_set_stacksize(x)
+
+#define Py_HAVE_NATIVE_TLS
+
+int
+PyThread_create_key(void)
+{
+ pthread_key_t key;
+ int fail = pthread_key_create(&key, NULL);
+ return fail ? -1 : key;
+}
+
+void
+PyThread_delete_key(int key)
+{
+ pthread_key_delete(key);
+}
+
+void
+PyThread_delete_key_value(int key)
+{
+ pthread_setspecific(key, NULL);
+}
+
+int
+PyThread_set_key_value(int key, void *value)
+{
+ int fail;
+ void *oldValue = pthread_getspecific(key);
+ if (oldValue != NULL)
+ return 0;
+ fail = pthread_setspecific(key, value);
+ return fail ? -1 : 0;
+}
+
+void *
+PyThread_get_key_value(int key)
+{
+ return pthread_getspecific(key);
+}
+
+void
+PyThread_ReInitTLS(void)
+{}