summaryrefslogtreecommitdiff
path: root/Modules
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2019-06-01 15:39:46 -0600
committerGitHub <noreply@github.com>2019-06-01 15:39:46 -0600
commit6a150bcaeb190d1731b38ab9c7a5d1a352847ddc (patch)
tree687d690cdcb19d4f30806b628dcdee37a4d61a13 /Modules
parent218e47b61862470477922e9aba1a23fd3dab18ae (diff)
downloadcpython-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.c1
-rw-r--r--Modules/signalmodule.c12
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);
}