diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2019-06-01 15:39:46 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-01 15:39:46 -0600 |
commit | 6a150bcaeb190d1731b38ab9c7a5d1a352847ddc (patch) | |
tree | 687d690cdcb19d4f30806b628dcdee37a4d61a13 /Modules | |
parent | 218e47b61862470477922e9aba1a23fd3dab18ae (diff) | |
download | cpython-git-6a150bcaeb190d1731b38ab9c7a5d1a352847ddc.tar.gz |
bpo-33608: Factor out a private, per-interpreter _Py_AddPendingCall(). (gh-13714)
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_testcapimodule.c | 1 | ||||
-rw-r--r-- | Modules/signalmodule.c | 12 |
2 files changed, 11 insertions, 2 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index b42f41cc8d..bf20e81a4c 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -2677,6 +2677,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 7698984ff3..1964646da2 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -21,6 +21,7 @@ #include <process.h> #endif #endif +#include "internal/pycore_pystate.h" #ifdef HAVE_SIGNAL_H #include <signal.h> @@ -259,6 +260,7 @@ trip_signal(int sig_num) /* Notify ceval.c */ _PyRuntimeState *runtime = &_PyRuntime; PyThreadState *tstate = _PyRuntimeState_GetThreadState(runtime); + PyInterpreterState *interp = runtime->interpreters.main; _PyEval_SignalReceived(&runtime->ceval); /* And then write to the wakeup fd *after* setting all the globals and @@ -299,7 +301,10 @@ trip_signal(int sig_num) { /* Py_AddPendingCall() isn't signal-safe, but we still use it for this exceptional case. */ - _PyEval_AddPendingCall(tstate, &runtime->ceval, + _PyEval_AddPendingCall(tstate, + &runtime->ceval, + &interp->ceval, + runtime->main_thread, report_wakeup_send_error, (void *)(intptr_t) last_error); } @@ -318,7 +323,10 @@ trip_signal(int sig_num) { /* Py_AddPendingCall() isn't signal-safe, but we still use it for this exceptional case. */ - _PyEval_AddPendingCall(tstate, &runtime->ceval, + _PyEval_AddPendingCall(tstate, + &runtime->ceval, + &interp->ceval, + runtime->main_thread, report_wakeup_write_error, (void *)(intptr_t)errno); } |