Author: mattip <[email protected]>
Branch: cpyext-ext
Changeset: r83213:1c960078443c
Date: 2016-03-21 13:13 +0200
http://bitbucket.org/pypy/pypy/changeset/1c960078443c/
Log: implement PyThread_init_thread as a NOP, start to implement
PyThread_start_new_thread
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -429,7 +429,7 @@
'PyThread_acquire_lock', 'PyThread_release_lock',
'PyThread_create_key', 'PyThread_delete_key', 'PyThread_set_key_value',
'PyThread_get_key_value', 'PyThread_delete_key_value',
- 'PyThread_ReInitTLS',
+ 'PyThread_ReInitTLS', 'PyThread_init_thread',
'PyStructSequence_InitType', 'PyStructSequence_New',
'PyStructSequence_UnnamedField',
diff --git a/pypy/module/cpyext/pystate.py b/pypy/module/cpyext/pystate.py
--- a/pypy/module/cpyext/pystate.py
+++ b/pypy/module/cpyext/pystate.py
@@ -54,6 +54,15 @@
return 0
return 1
+thread_func = lltype.Ptr(lltype.FuncType([rffi.VOIDP], lltype.Void))
+@cpython_api([thread_func, rffi.VOIDP], rffi.INT_real, error=-1)
+def PyThread_start_new_thread(space, func, arg):
+ from pypy.module.thread import os_thread
+ w_args = space.newtuple([arg])
+ XXX # How to wrap func as a space.callable ?
+ os_thread.start_new_thread(space, func, w_args)
+ return 0
+
# XXX: might be generally useful
def encapsulator(T, flavor='raw', dealloc=None):
class MemoryCapsule(object):
diff --git a/pypy/module/cpyext/src/pythread.c
b/pypy/module/cpyext/src/pythread.c
--- a/pypy/module/cpyext/src/pythread.c
+++ b/pypy/module/cpyext/src/pythread.c
@@ -15,6 +15,17 @@
#endif
}
+static int initialized;
+
+void
+PyThread_init_thread(void)
+{
+ if (initialized)
+ return;
+ initialized = 1;
+ /*PyThread__init_thread(); a NOP on modern platforms */
+}
+
PyThread_type_lock
PyThread_allocate_lock(void)
{
diff --git a/pypy/module/cpyext/stubsactive.py
b/pypy/module/cpyext/stubsactive.py
--- a/pypy/module/cpyext/stubsactive.py
+++ b/pypy/module/cpyext/stubsactive.py
@@ -42,7 +42,3 @@
"""
return -1
-thread_func = lltype.Ptr(lltype.FuncType([rffi.VOIDP], lltype.Void))
-@cpython_api([thread_func, rffi.VOIDP], rffi.INT_real, error=-1)
-def PyThread_start_new_thread(space, func, arg):
- return -1
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit