diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-05-13 10:35:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-13 10:35:37 (GMT) |
commit | d5d9e81ce9a7efc5bc14a5c21398d1ef6f626884 (patch) | |
tree | 0650e31fe590d6be19dc21546cd129d68139d4af | |
parent | 3aef48e3157f52a8bcdbacf47a35d0016348735e (diff) | |
download | cpython-d5d9e81ce9a7efc5bc14a5c21398d1ef6f626884.zip cpython-d5d9e81ce9a7efc5bc14a5c21398d1ef6f626884.tar.gz cpython-d5d9e81ce9a7efc5bc14a5c21398d1ef6f626884.tar.bz2 |
bpo-36728: Remove PyEval_ReInitThreads() from C API (GH-13241)
Remove the PyEval_ReInitThreads() function from the Python C API.
It should not be called explicitly: use PyOS_AfterFork_Child()
instead.
Rename PyEval_ReInitThreads() to _PyEval_ReInitThreads() and add a
'runtime' parameter.
-rw-r--r-- | Doc/whatsnew/3.8.rst | 5 | ||||
-rw-r--r-- | Include/ceval.h | 1 | ||||
-rw-r--r-- | Include/internal/pycore_ceval.h | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/C API/2019-05-11-03-56-23.bpo-36728.FR-dMP.rst | 2 | ||||
-rw-r--r-- | Modules/posixmodule.c | 19 | ||||
-rw-r--r-- | Python/ceval.c | 3 |
6 files changed, 25 insertions, 7 deletions
diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index 684656f..ac25305 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -990,6 +990,11 @@ Changes in the Python API Changes in the C API -------------------- +* The :c:func:`PyEval_ReInitThreads` function has been removed from the C API. + It should not be called explicitly: use :c:func:`PyOS_AfterFork_Child` + instead. + (Contributed by Victor Stinner in :issue:`36728`.) + * On Unix, C extensions are no longer linked to libpython except on Android. When Python is embedded, ``libpython`` must not be loaded with ``RTLD_LOCAL``, but ``RTLD_GLOBAL`` instead. Previously, using diff --git a/Include/ceval.h b/Include/ceval.h index 2d4b67d..8cdf353 100644 --- a/Include/ceval.h +++ b/Include/ceval.h @@ -195,7 +195,6 @@ PyAPI_FUNC(void) PyEval_AcquireLock(void) Py_DEPRECATED(3.2); PyAPI_FUNC(void) PyEval_ReleaseLock(void) /* Py_DEPRECATED(3.2) */; PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate); PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate); -PyAPI_FUNC(void) PyEval_ReInitThreads(void); #ifndef Py_LIMITED_API PyAPI_FUNC(void) _PyEval_SetSwitchInterval(unsigned long microseconds); diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h index cdc73a3..7a3166e 100644 --- a/Include/internal/pycore_ceval.h +++ b/Include/internal/pycore_ceval.h @@ -24,6 +24,8 @@ PyAPI_FUNC(int) _PyEval_AddPendingCall( void *arg); PyAPI_FUNC(void) _PyEval_SignalAsyncExc( struct _ceval_runtime_state *ceval); +PyAPI_FUNC(void) _PyEval_ReInitThreads( + _PyRuntimeState *runtime); #ifdef __cplusplus } diff --git a/Misc/NEWS.d/next/C API/2019-05-11-03-56-23.bpo-36728.FR-dMP.rst b/Misc/NEWS.d/next/C API/2019-05-11-03-56-23.bpo-36728.FR-dMP.rst new file mode 100644 index 0000000..c691cc4 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2019-05-11-03-56-23.bpo-36728.FR-dMP.rst @@ -0,0 +1,2 @@ +The :c:func:`PyEval_ReInitThreads` function has been removed from the C API. +It should not be called explicitly: use :c:func:`PyOS_AfterFork_Child` instead. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index aa77094..aca64ef 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -25,14 +25,25 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" +#ifdef MS_WINDOWS + /* include <windows.h> early to avoid conflict with pycore_condvar.h: + + #define WIN32_LEAN_AND_MEAN + #include <windows.h> + + FSCTL_GET_REPARSE_POINT is not exported with WIN32_LEAN_AND_MEAN. */ +# include <windows.h> +#endif + +#include "pycore_ceval.h" /* _PyEval_ReInitThreads() */ +#include "pycore_pystate.h" /* _PyRuntime */ #include "pythread.h" #include "structmember.h" #ifndef MS_WINDOWS -#include "posixmodule.h" +# include "posixmodule.h" #else -#include "winreparse.h" +# include "winreparse.h" #endif -#include "pycore_pystate.h" /* On android API level 21, 'AT_EACCESS' is not declared although * HAVE_FACCESSAT is defined. */ @@ -424,7 +435,7 @@ PyOS_AfterFork_Child(void) _PyRuntimeState *runtime = &_PyRuntime; _PyGILState_Reinit(runtime); _PyInterpreterState_DeleteExceptMain(runtime); - PyEval_ReInitThreads(); + _PyEval_ReInitThreads(runtime); _PyImport_ReInitLock(); _PySignal_AfterFork(); _PyRuntimeState_ReInitThreads(runtime); diff --git a/Python/ceval.c b/Python/ceval.c index 1743953..1bb4704 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -289,9 +289,8 @@ PyEval_ReleaseThread(PyThreadState *tstate) */ void -PyEval_ReInitThreads(void) +_PyEval_ReInitThreads(_PyRuntimeState *runtime) { - _PyRuntimeState *runtime = &_PyRuntime; struct _ceval_runtime_state *ceval = &runtime->ceval; if (!gil_created(&ceval->gil)) { return; |