diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2019-02-24 23:40:47 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-24 23:40:47 (GMT) |
commit | ef4ac967e2f3a9a18330cc6abe14adb4bc3d0465 (patch) | |
tree | 9486fb50d2f39468a7c00de7fb5c05fdd67372e8 /Modules | |
parent | 463572c8beb59fd9d6850440af48a5c5f4c0c0c9 (diff) | |
download | cpython-ef4ac967e2f3a9a18330cc6abe14adb4bc3d0465.zip cpython-ef4ac967e2f3a9a18330cc6abe14adb4bc3d0465.tar.gz cpython-ef4ac967e2f3a9a18330cc6abe14adb4bc3d0465.tar.bz2 |
bpo-33608: Factor out a private, per-interpreter _Py_AddPendingCall(). (GH-11617)
This involves moving the global "pending calls" state to PyInterpreterState.
https://bugs.python.org/issue33608
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_testcapimodule.c | 1 | ||||
-rw-r--r-- | Modules/signalmodule.c | 13 |
2 files changed, 10 insertions, 4 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 350ef77..5b0da78 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -2445,6 +2445,7 @@ pending_threadfunc(PyObject *self, PyObject *arg) Py_INCREF(callable); Py_BEGIN_ALLOW_THREADS + /* XXX Use the internal _Py_AddPendingCall(). */ r = Py_AddPendingCall(&_pending_callback, callable); Py_END_ALLOW_THREADS diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index f29720b..ac3b6c7 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -19,6 +19,7 @@ #include <process.h> #endif #endif +#include "internal/pycore_pystate.h" #ifdef HAVE_SIGNAL_H #include <signal.h> @@ -295,8 +296,10 @@ trip_signal(int sig_num) { /* Py_AddPendingCall() isn't signal-safe, but we still use it for this exceptional case. */ - Py_AddPendingCall(report_wakeup_send_error, - (void *)(intptr_t) last_error); + _Py_AddPendingCall(_PyRuntime.interpreters.main, + main_thread, + report_wakeup_send_error, + (void *)(intptr_t) last_error); } } } @@ -313,8 +316,10 @@ trip_signal(int sig_num) { /* Py_AddPendingCall() isn't signal-safe, but we still use it for this exceptional case. */ - Py_AddPendingCall(report_wakeup_write_error, - (void *)(intptr_t)errno); + _Py_AddPendingCall(_PyRuntime.interpreters.main, + main_thread, + report_wakeup_write_error, + (void *)(intptr_t)errno); } } } |