1// Define Py_NSIG constant for signal handling.
2
3#ifndef Py_INTERNAL_SIGNAL_H
4#define Py_INTERNAL_SIGNAL_H
5#ifdef __cplusplus
6extern "C" {
7#endif
8
9#ifndef Py_BUILD_CORE
10#  error "this header requires Py_BUILD_CORE define"
11#endif
12
13#include <signal.h>                // NSIG
14
15#ifdef _SIG_MAXSIG
16   // gh-91145: On FreeBSD, <signal.h> defines NSIG as 32: it doesn't include
17   // realtime signals: [SIGRTMIN,SIGRTMAX]. Use _SIG_MAXSIG instead. For
18   // example on x86-64 FreeBSD 13, SIGRTMAX is 126 and _SIG_MAXSIG is 128.
19#  define Py_NSIG _SIG_MAXSIG
20#elif defined(NSIG)
21#  define Py_NSIG NSIG
22#elif defined(_NSIG)
23#  define Py_NSIG _NSIG            // BSD/SysV
24#elif defined(_SIGMAX)
25#  define Py_NSIG (_SIGMAX + 1)    // QNX
26#elif defined(SIGMAX)
27#  define Py_NSIG (SIGMAX + 1)     // djgpp
28#else
29#  define Py_NSIG 64               // Use a reasonable default value
30#endif
31
32#ifdef __cplusplus
33}
34#endif
35#endif  // !Py_INTERNAL_SIGNAL_H
36