aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Modules/signalmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/signalmodule.c')
-rw-r--r--Modules/signalmodule.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 02c58ff538e..b602338e4f9 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -7,13 +7,13 @@
#include "pycore_atomic.h" // _Py_atomic_int
#include "pycore_call.h" // _PyObject_Call()
#include "pycore_ceval.h" // _PyEval_SignalReceived()
+#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_fileutils.h" // _Py_BEGIN_SUPPRESS_IPH
#include "pycore_frame.h" // _PyInterpreterFrame
#include "pycore_moduleobject.h" // _PyModule_GetState()
#include "pycore_pyerrors.h" // _PyErr_SetString()
-#include "pycore_pylifecycle.h" // NSIG
#include "pycore_pystate.h" // _PyThreadState_GET()
-#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
+#include "pycore_signal.h" // Py_NSIG
#ifndef MS_WINDOWS
# include "posixmodule.h"
@@ -106,7 +106,7 @@ static volatile struct {
* (even though it would probably be otherwise, anyway).
*/
_Py_atomic_address func;
-} Handlers[NSIG];
+} Handlers[Py_NSIG];
#ifdef MS_WINDOWS
#define INVALID_FD ((SOCKET_T)-1)
@@ -542,7 +542,7 @@ signal_signal_impl(PyObject *module, int signalnum, PyObject *handler)
"of the main interpreter");
return NULL;
}
- if (signalnum < 1 || signalnum >= NSIG) {
+ if (signalnum < 1 || signalnum >= Py_NSIG) {
_PyErr_SetString(tstate, PyExc_ValueError,
"signal number out of range");
return NULL;
@@ -601,7 +601,7 @@ signal_getsignal_impl(PyObject *module, int signalnum)
/*[clinic end generated code: output=35b3e0e796fd555e input=ac23a00f19dfa509]*/
{
PyObject *old_handler;
- if (signalnum < 1 || signalnum >= NSIG) {
+ if (signalnum < 1 || signalnum >= Py_NSIG) {
PyErr_SetString(PyExc_ValueError,
"signal number out of range");
return NULL;
@@ -634,7 +634,7 @@ signal_strsignal_impl(PyObject *module, int signalnum)
{
const char *res;
- if (signalnum < 1 || signalnum >= NSIG) {
+ if (signalnum < 1 || signalnum >= Py_NSIG) {
PyErr_SetString(PyExc_ValueError,
"signal number out of range");
return NULL;
@@ -712,7 +712,7 @@ static PyObject *
signal_siginterrupt_impl(PyObject *module, int signalnum, int flag)
/*[clinic end generated code: output=063816243d85dd19 input=4160acacca3e2099]*/
{
- if (signalnum < 1 || signalnum >= NSIG) {
+ if (signalnum < 1 || signalnum >= Py_NSIG) {
PyErr_SetString(PyExc_ValueError,
"signal number out of range");
return NULL;
@@ -964,7 +964,7 @@ sigset_to_set(sigset_t mask)
if (result == NULL)
return NULL;
- for (sig = 1; sig < NSIG; sig++) {
+ for (sig = 1; sig < Py_NSIG; sig++) {
if (sigismember(&mask, sig) != 1)
continue;
@@ -1439,13 +1439,15 @@ the first is the signal number, the second is the interrupted stack frame.");
static int
signal_add_constants(PyObject *module)
{
+ if (PyModule_AddIntConstant(module, "NSIG", Py_NSIG) < 0) {
+ return -1;
+ }
+
#define ADD_INT_MACRO(macro) \
if (PyModule_AddIntConstant(module, #macro, macro) < 0) { \
return -1; \
}
- ADD_INT_MACRO(NSIG);
-
// SIG_xxx pthread_sigmask() constants
#ifdef SIG_BLOCK
ADD_INT_MACRO(SIG_BLOCK);
@@ -1605,7 +1607,7 @@ static int
signal_get_set_handlers(signal_state_t *state, PyObject *mod_dict)
{
// Get signal handlers
- for (int signum = 1; signum < NSIG; signum++) {
+ for (int signum = 1; signum < Py_NSIG; signum++) {
void (*c_handler)(int) = PyOS_getsig(signum);
PyObject *func;
if (c_handler == SIG_DFL) {
@@ -1762,7 +1764,7 @@ _PySignal_Fini(void)
signal_state_t *state = &signal_global_state;
// Restore default signals and clear handlers
- for (int signum = 1; signum < NSIG; signum++) {
+ for (int signum = 1; signum < Py_NSIG; signum++) {
PyObject *func = get_handler(signum);
_Py_atomic_store_relaxed(&Handlers[signum].tripped, 0);
set_handler(signum, NULL);
@@ -1828,7 +1830,7 @@ _PyErr_CheckSignalsTstate(PyThreadState *tstate)
_PyInterpreterFrame *frame = tstate->cframe->current_frame;
signal_state_t *state = &signal_global_state;
- for (int i = 1; i < NSIG; i++) {
+ for (int i = 1; i < Py_NSIG; i++) {
if (!_Py_atomic_load_relaxed(&Handlers[i].tripped)) {
continue;
}
@@ -1905,7 +1907,7 @@ _PyErr_CheckSignals(void)
int
PyErr_SetInterruptEx(int signum)
{
- if (signum < 1 || signum >= NSIG) {
+ if (signum < 1 || signum >= Py_NSIG) {
return -1;
}
@@ -1995,7 +1997,7 @@ _PySignal_Init(int install_signal_handlers)
}
#endif
- for (int signum = 1; signum < NSIG; signum++) {
+ for (int signum = 1; signum < Py_NSIG; signum++) {
_Py_atomic_store_relaxed(&Handlers[signum].tripped, 0);
}
@@ -2045,7 +2047,7 @@ _clear_pending_signals(void)
}
_Py_atomic_store(&is_tripped, 0);
- for (int i = 1; i < NSIG; ++i) {
+ for (int i = 1; i < Py_NSIG; ++i) {
_Py_atomic_store_relaxed(&Handlers[i].tripped, 0);
}
}