17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(signal_default_int_handler__doc__,
67db96d56Sopenharmony_ci"default_int_handler($module, signalnum, frame, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"The default handler for SIGINT installed by Python.\n"
107db96d56Sopenharmony_ci"\n"
117db96d56Sopenharmony_ci"It raises KeyboardInterrupt.");
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ci#define SIGNAL_DEFAULT_INT_HANDLER_METHODDEF    \
147db96d56Sopenharmony_ci    {"default_int_handler", _PyCFunction_CAST(signal_default_int_handler), METH_FASTCALL, signal_default_int_handler__doc__},
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_cistatic PyObject *
177db96d56Sopenharmony_cisignal_default_int_handler_impl(PyObject *module, int signalnum,
187db96d56Sopenharmony_ci                                PyObject *frame);
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_cistatic PyObject *
217db96d56Sopenharmony_cisignal_default_int_handler(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
227db96d56Sopenharmony_ci{
237db96d56Sopenharmony_ci    PyObject *return_value = NULL;
247db96d56Sopenharmony_ci    int signalnum;
257db96d56Sopenharmony_ci    PyObject *frame;
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("default_int_handler", nargs, 2, 2)) {
287db96d56Sopenharmony_ci        goto exit;
297db96d56Sopenharmony_ci    }
307db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(args[0]);
317db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
327db96d56Sopenharmony_ci        goto exit;
337db96d56Sopenharmony_ci    }
347db96d56Sopenharmony_ci    frame = args[1];
357db96d56Sopenharmony_ci    return_value = signal_default_int_handler_impl(module, signalnum, frame);
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ciexit:
387db96d56Sopenharmony_ci    return return_value;
397db96d56Sopenharmony_ci}
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci#if defined(HAVE_ALARM)
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ciPyDoc_STRVAR(signal_alarm__doc__,
447db96d56Sopenharmony_ci"alarm($module, seconds, /)\n"
457db96d56Sopenharmony_ci"--\n"
467db96d56Sopenharmony_ci"\n"
477db96d56Sopenharmony_ci"Arrange for SIGALRM to arrive after the given number of seconds.");
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ci#define SIGNAL_ALARM_METHODDEF    \
507db96d56Sopenharmony_ci    {"alarm", (PyCFunction)signal_alarm, METH_O, signal_alarm__doc__},
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_cistatic long
537db96d56Sopenharmony_cisignal_alarm_impl(PyObject *module, int seconds);
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_cistatic PyObject *
567db96d56Sopenharmony_cisignal_alarm(PyObject *module, PyObject *arg)
577db96d56Sopenharmony_ci{
587db96d56Sopenharmony_ci    PyObject *return_value = NULL;
597db96d56Sopenharmony_ci    int seconds;
607db96d56Sopenharmony_ci    long _return_value;
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ci    seconds = _PyLong_AsInt(arg);
637db96d56Sopenharmony_ci    if (seconds == -1 && PyErr_Occurred()) {
647db96d56Sopenharmony_ci        goto exit;
657db96d56Sopenharmony_ci    }
667db96d56Sopenharmony_ci    _return_value = signal_alarm_impl(module, seconds);
677db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
687db96d56Sopenharmony_ci        goto exit;
697db96d56Sopenharmony_ci    }
707db96d56Sopenharmony_ci    return_value = PyLong_FromLong(_return_value);
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ciexit:
737db96d56Sopenharmony_ci    return return_value;
747db96d56Sopenharmony_ci}
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_ci#endif /* defined(HAVE_ALARM) */
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ci#if defined(HAVE_PAUSE)
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_ciPyDoc_STRVAR(signal_pause__doc__,
817db96d56Sopenharmony_ci"pause($module, /)\n"
827db96d56Sopenharmony_ci"--\n"
837db96d56Sopenharmony_ci"\n"
847db96d56Sopenharmony_ci"Wait until a signal arrives.");
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ci#define SIGNAL_PAUSE_METHODDEF    \
877db96d56Sopenharmony_ci    {"pause", (PyCFunction)signal_pause, METH_NOARGS, signal_pause__doc__},
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_cistatic PyObject *
907db96d56Sopenharmony_cisignal_pause_impl(PyObject *module);
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_cistatic PyObject *
937db96d56Sopenharmony_cisignal_pause(PyObject *module, PyObject *Py_UNUSED(ignored))
947db96d56Sopenharmony_ci{
957db96d56Sopenharmony_ci    return signal_pause_impl(module);
967db96d56Sopenharmony_ci}
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci#endif /* defined(HAVE_PAUSE) */
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ciPyDoc_STRVAR(signal_raise_signal__doc__,
1017db96d56Sopenharmony_ci"raise_signal($module, signalnum, /)\n"
1027db96d56Sopenharmony_ci"--\n"
1037db96d56Sopenharmony_ci"\n"
1047db96d56Sopenharmony_ci"Send a signal to the executing process.");
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ci#define SIGNAL_RAISE_SIGNAL_METHODDEF    \
1077db96d56Sopenharmony_ci    {"raise_signal", (PyCFunction)signal_raise_signal, METH_O, signal_raise_signal__doc__},
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_cistatic PyObject *
1107db96d56Sopenharmony_cisignal_raise_signal_impl(PyObject *module, int signalnum);
1117db96d56Sopenharmony_ci
1127db96d56Sopenharmony_cistatic PyObject *
1137db96d56Sopenharmony_cisignal_raise_signal(PyObject *module, PyObject *arg)
1147db96d56Sopenharmony_ci{
1157db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1167db96d56Sopenharmony_ci    int signalnum;
1177db96d56Sopenharmony_ci
1187db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(arg);
1197db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
1207db96d56Sopenharmony_ci        goto exit;
1217db96d56Sopenharmony_ci    }
1227db96d56Sopenharmony_ci    return_value = signal_raise_signal_impl(module, signalnum);
1237db96d56Sopenharmony_ci
1247db96d56Sopenharmony_ciexit:
1257db96d56Sopenharmony_ci    return return_value;
1267db96d56Sopenharmony_ci}
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ciPyDoc_STRVAR(signal_signal__doc__,
1297db96d56Sopenharmony_ci"signal($module, signalnum, handler, /)\n"
1307db96d56Sopenharmony_ci"--\n"
1317db96d56Sopenharmony_ci"\n"
1327db96d56Sopenharmony_ci"Set the action for the given signal.\n"
1337db96d56Sopenharmony_ci"\n"
1347db96d56Sopenharmony_ci"The action can be SIG_DFL, SIG_IGN, or a callable Python object.\n"
1357db96d56Sopenharmony_ci"The previous action is returned.  See getsignal() for possible return values.\n"
1367db96d56Sopenharmony_ci"\n"
1377db96d56Sopenharmony_ci"*** IMPORTANT NOTICE ***\n"
1387db96d56Sopenharmony_ci"A signal handler function is called with two arguments:\n"
1397db96d56Sopenharmony_ci"the first is the signal number, the second is the interrupted stack frame.");
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_ci#define SIGNAL_SIGNAL_METHODDEF    \
1427db96d56Sopenharmony_ci    {"signal", _PyCFunction_CAST(signal_signal), METH_FASTCALL, signal_signal__doc__},
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_cistatic PyObject *
1457db96d56Sopenharmony_cisignal_signal_impl(PyObject *module, int signalnum, PyObject *handler);
1467db96d56Sopenharmony_ci
1477db96d56Sopenharmony_cistatic PyObject *
1487db96d56Sopenharmony_cisignal_signal(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1497db96d56Sopenharmony_ci{
1507db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1517db96d56Sopenharmony_ci    int signalnum;
1527db96d56Sopenharmony_ci    PyObject *handler;
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("signal", nargs, 2, 2)) {
1557db96d56Sopenharmony_ci        goto exit;
1567db96d56Sopenharmony_ci    }
1577db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(args[0]);
1587db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
1597db96d56Sopenharmony_ci        goto exit;
1607db96d56Sopenharmony_ci    }
1617db96d56Sopenharmony_ci    handler = args[1];
1627db96d56Sopenharmony_ci    return_value = signal_signal_impl(module, signalnum, handler);
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ciexit:
1657db96d56Sopenharmony_ci    return return_value;
1667db96d56Sopenharmony_ci}
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ciPyDoc_STRVAR(signal_getsignal__doc__,
1697db96d56Sopenharmony_ci"getsignal($module, signalnum, /)\n"
1707db96d56Sopenharmony_ci"--\n"
1717db96d56Sopenharmony_ci"\n"
1727db96d56Sopenharmony_ci"Return the current action for the given signal.\n"
1737db96d56Sopenharmony_ci"\n"
1747db96d56Sopenharmony_ci"The return value can be:\n"
1757db96d56Sopenharmony_ci"  SIG_IGN -- if the signal is being ignored\n"
1767db96d56Sopenharmony_ci"  SIG_DFL -- if the default action for the signal is in effect\n"
1777db96d56Sopenharmony_ci"  None    -- if an unknown handler is in effect\n"
1787db96d56Sopenharmony_ci"  anything else -- the callable Python object used as a handler");
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci#define SIGNAL_GETSIGNAL_METHODDEF    \
1817db96d56Sopenharmony_ci    {"getsignal", (PyCFunction)signal_getsignal, METH_O, signal_getsignal__doc__},
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_cistatic PyObject *
1847db96d56Sopenharmony_cisignal_getsignal_impl(PyObject *module, int signalnum);
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_cistatic PyObject *
1877db96d56Sopenharmony_cisignal_getsignal(PyObject *module, PyObject *arg)
1887db96d56Sopenharmony_ci{
1897db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1907db96d56Sopenharmony_ci    int signalnum;
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(arg);
1937db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
1947db96d56Sopenharmony_ci        goto exit;
1957db96d56Sopenharmony_ci    }
1967db96d56Sopenharmony_ci    return_value = signal_getsignal_impl(module, signalnum);
1977db96d56Sopenharmony_ci
1987db96d56Sopenharmony_ciexit:
1997db96d56Sopenharmony_ci    return return_value;
2007db96d56Sopenharmony_ci}
2017db96d56Sopenharmony_ci
2027db96d56Sopenharmony_ciPyDoc_STRVAR(signal_strsignal__doc__,
2037db96d56Sopenharmony_ci"strsignal($module, signalnum, /)\n"
2047db96d56Sopenharmony_ci"--\n"
2057db96d56Sopenharmony_ci"\n"
2067db96d56Sopenharmony_ci"Return the system description of the given signal.\n"
2077db96d56Sopenharmony_ci"\n"
2087db96d56Sopenharmony_ci"Returns the description of signal *signalnum*, such as \"Interrupt\"\n"
2097db96d56Sopenharmony_ci"for :const:`SIGINT`. Returns :const:`None` if *signalnum* has no\n"
2107db96d56Sopenharmony_ci"description. Raises :exc:`ValueError` if *signalnum* is invalid.");
2117db96d56Sopenharmony_ci
2127db96d56Sopenharmony_ci#define SIGNAL_STRSIGNAL_METHODDEF    \
2137db96d56Sopenharmony_ci    {"strsignal", (PyCFunction)signal_strsignal, METH_O, signal_strsignal__doc__},
2147db96d56Sopenharmony_ci
2157db96d56Sopenharmony_cistatic PyObject *
2167db96d56Sopenharmony_cisignal_strsignal_impl(PyObject *module, int signalnum);
2177db96d56Sopenharmony_ci
2187db96d56Sopenharmony_cistatic PyObject *
2197db96d56Sopenharmony_cisignal_strsignal(PyObject *module, PyObject *arg)
2207db96d56Sopenharmony_ci{
2217db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2227db96d56Sopenharmony_ci    int signalnum;
2237db96d56Sopenharmony_ci
2247db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(arg);
2257db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
2267db96d56Sopenharmony_ci        goto exit;
2277db96d56Sopenharmony_ci    }
2287db96d56Sopenharmony_ci    return_value = signal_strsignal_impl(module, signalnum);
2297db96d56Sopenharmony_ci
2307db96d56Sopenharmony_ciexit:
2317db96d56Sopenharmony_ci    return return_value;
2327db96d56Sopenharmony_ci}
2337db96d56Sopenharmony_ci
2347db96d56Sopenharmony_ci#if defined(HAVE_SIGINTERRUPT)
2357db96d56Sopenharmony_ci
2367db96d56Sopenharmony_ciPyDoc_STRVAR(signal_siginterrupt__doc__,
2377db96d56Sopenharmony_ci"siginterrupt($module, signalnum, flag, /)\n"
2387db96d56Sopenharmony_ci"--\n"
2397db96d56Sopenharmony_ci"\n"
2407db96d56Sopenharmony_ci"Change system call restart behaviour.\n"
2417db96d56Sopenharmony_ci"\n"
2427db96d56Sopenharmony_ci"If flag is False, system calls will be restarted when interrupted by\n"
2437db96d56Sopenharmony_ci"signal sig, else system calls will be interrupted.");
2447db96d56Sopenharmony_ci
2457db96d56Sopenharmony_ci#define SIGNAL_SIGINTERRUPT_METHODDEF    \
2467db96d56Sopenharmony_ci    {"siginterrupt", _PyCFunction_CAST(signal_siginterrupt), METH_FASTCALL, signal_siginterrupt__doc__},
2477db96d56Sopenharmony_ci
2487db96d56Sopenharmony_cistatic PyObject *
2497db96d56Sopenharmony_cisignal_siginterrupt_impl(PyObject *module, int signalnum, int flag);
2507db96d56Sopenharmony_ci
2517db96d56Sopenharmony_cistatic PyObject *
2527db96d56Sopenharmony_cisignal_siginterrupt(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2537db96d56Sopenharmony_ci{
2547db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2557db96d56Sopenharmony_ci    int signalnum;
2567db96d56Sopenharmony_ci    int flag;
2577db96d56Sopenharmony_ci
2587db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("siginterrupt", nargs, 2, 2)) {
2597db96d56Sopenharmony_ci        goto exit;
2607db96d56Sopenharmony_ci    }
2617db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(args[0]);
2627db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
2637db96d56Sopenharmony_ci        goto exit;
2647db96d56Sopenharmony_ci    }
2657db96d56Sopenharmony_ci    flag = _PyLong_AsInt(args[1]);
2667db96d56Sopenharmony_ci    if (flag == -1 && PyErr_Occurred()) {
2677db96d56Sopenharmony_ci        goto exit;
2687db96d56Sopenharmony_ci    }
2697db96d56Sopenharmony_ci    return_value = signal_siginterrupt_impl(module, signalnum, flag);
2707db96d56Sopenharmony_ci
2717db96d56Sopenharmony_ciexit:
2727db96d56Sopenharmony_ci    return return_value;
2737db96d56Sopenharmony_ci}
2747db96d56Sopenharmony_ci
2757db96d56Sopenharmony_ci#endif /* defined(HAVE_SIGINTERRUPT) */
2767db96d56Sopenharmony_ci
2777db96d56Sopenharmony_ci#if defined(HAVE_SETITIMER)
2787db96d56Sopenharmony_ci
2797db96d56Sopenharmony_ciPyDoc_STRVAR(signal_setitimer__doc__,
2807db96d56Sopenharmony_ci"setitimer($module, which, seconds, interval=0.0, /)\n"
2817db96d56Sopenharmony_ci"--\n"
2827db96d56Sopenharmony_ci"\n"
2837db96d56Sopenharmony_ci"Sets given itimer (one of ITIMER_REAL, ITIMER_VIRTUAL or ITIMER_PROF).\n"
2847db96d56Sopenharmony_ci"\n"
2857db96d56Sopenharmony_ci"The timer will fire after value seconds and after that every interval seconds.\n"
2867db96d56Sopenharmony_ci"The itimer can be cleared by setting seconds to zero.\n"
2877db96d56Sopenharmony_ci"\n"
2887db96d56Sopenharmony_ci"Returns old values as a tuple: (delay, interval).");
2897db96d56Sopenharmony_ci
2907db96d56Sopenharmony_ci#define SIGNAL_SETITIMER_METHODDEF    \
2917db96d56Sopenharmony_ci    {"setitimer", _PyCFunction_CAST(signal_setitimer), METH_FASTCALL, signal_setitimer__doc__},
2927db96d56Sopenharmony_ci
2937db96d56Sopenharmony_cistatic PyObject *
2947db96d56Sopenharmony_cisignal_setitimer_impl(PyObject *module, int which, PyObject *seconds,
2957db96d56Sopenharmony_ci                      PyObject *interval);
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_cistatic PyObject *
2987db96d56Sopenharmony_cisignal_setitimer(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2997db96d56Sopenharmony_ci{
3007db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3017db96d56Sopenharmony_ci    int which;
3027db96d56Sopenharmony_ci    PyObject *seconds;
3037db96d56Sopenharmony_ci    PyObject *interval = NULL;
3047db96d56Sopenharmony_ci
3057db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("setitimer", nargs, 2, 3)) {
3067db96d56Sopenharmony_ci        goto exit;
3077db96d56Sopenharmony_ci    }
3087db96d56Sopenharmony_ci    which = _PyLong_AsInt(args[0]);
3097db96d56Sopenharmony_ci    if (which == -1 && PyErr_Occurred()) {
3107db96d56Sopenharmony_ci        goto exit;
3117db96d56Sopenharmony_ci    }
3127db96d56Sopenharmony_ci    seconds = args[1];
3137db96d56Sopenharmony_ci    if (nargs < 3) {
3147db96d56Sopenharmony_ci        goto skip_optional;
3157db96d56Sopenharmony_ci    }
3167db96d56Sopenharmony_ci    interval = args[2];
3177db96d56Sopenharmony_ciskip_optional:
3187db96d56Sopenharmony_ci    return_value = signal_setitimer_impl(module, which, seconds, interval);
3197db96d56Sopenharmony_ci
3207db96d56Sopenharmony_ciexit:
3217db96d56Sopenharmony_ci    return return_value;
3227db96d56Sopenharmony_ci}
3237db96d56Sopenharmony_ci
3247db96d56Sopenharmony_ci#endif /* defined(HAVE_SETITIMER) */
3257db96d56Sopenharmony_ci
3267db96d56Sopenharmony_ci#if defined(HAVE_GETITIMER)
3277db96d56Sopenharmony_ci
3287db96d56Sopenharmony_ciPyDoc_STRVAR(signal_getitimer__doc__,
3297db96d56Sopenharmony_ci"getitimer($module, which, /)\n"
3307db96d56Sopenharmony_ci"--\n"
3317db96d56Sopenharmony_ci"\n"
3327db96d56Sopenharmony_ci"Returns current value of given itimer.");
3337db96d56Sopenharmony_ci
3347db96d56Sopenharmony_ci#define SIGNAL_GETITIMER_METHODDEF    \
3357db96d56Sopenharmony_ci    {"getitimer", (PyCFunction)signal_getitimer, METH_O, signal_getitimer__doc__},
3367db96d56Sopenharmony_ci
3377db96d56Sopenharmony_cistatic PyObject *
3387db96d56Sopenharmony_cisignal_getitimer_impl(PyObject *module, int which);
3397db96d56Sopenharmony_ci
3407db96d56Sopenharmony_cistatic PyObject *
3417db96d56Sopenharmony_cisignal_getitimer(PyObject *module, PyObject *arg)
3427db96d56Sopenharmony_ci{
3437db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3447db96d56Sopenharmony_ci    int which;
3457db96d56Sopenharmony_ci
3467db96d56Sopenharmony_ci    which = _PyLong_AsInt(arg);
3477db96d56Sopenharmony_ci    if (which == -1 && PyErr_Occurred()) {
3487db96d56Sopenharmony_ci        goto exit;
3497db96d56Sopenharmony_ci    }
3507db96d56Sopenharmony_ci    return_value = signal_getitimer_impl(module, which);
3517db96d56Sopenharmony_ci
3527db96d56Sopenharmony_ciexit:
3537db96d56Sopenharmony_ci    return return_value;
3547db96d56Sopenharmony_ci}
3557db96d56Sopenharmony_ci
3567db96d56Sopenharmony_ci#endif /* defined(HAVE_GETITIMER) */
3577db96d56Sopenharmony_ci
3587db96d56Sopenharmony_ci#if defined(HAVE_SIGSET_T) && defined(PYPTHREAD_SIGMASK)
3597db96d56Sopenharmony_ci
3607db96d56Sopenharmony_ciPyDoc_STRVAR(signal_pthread_sigmask__doc__,
3617db96d56Sopenharmony_ci"pthread_sigmask($module, how, mask, /)\n"
3627db96d56Sopenharmony_ci"--\n"
3637db96d56Sopenharmony_ci"\n"
3647db96d56Sopenharmony_ci"Fetch and/or change the signal mask of the calling thread.");
3657db96d56Sopenharmony_ci
3667db96d56Sopenharmony_ci#define SIGNAL_PTHREAD_SIGMASK_METHODDEF    \
3677db96d56Sopenharmony_ci    {"pthread_sigmask", _PyCFunction_CAST(signal_pthread_sigmask), METH_FASTCALL, signal_pthread_sigmask__doc__},
3687db96d56Sopenharmony_ci
3697db96d56Sopenharmony_cistatic PyObject *
3707db96d56Sopenharmony_cisignal_pthread_sigmask_impl(PyObject *module, int how, sigset_t mask);
3717db96d56Sopenharmony_ci
3727db96d56Sopenharmony_cistatic PyObject *
3737db96d56Sopenharmony_cisignal_pthread_sigmask(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
3747db96d56Sopenharmony_ci{
3757db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3767db96d56Sopenharmony_ci    int how;
3777db96d56Sopenharmony_ci    sigset_t mask;
3787db96d56Sopenharmony_ci
3797db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("pthread_sigmask", nargs, 2, 2)) {
3807db96d56Sopenharmony_ci        goto exit;
3817db96d56Sopenharmony_ci    }
3827db96d56Sopenharmony_ci    how = _PyLong_AsInt(args[0]);
3837db96d56Sopenharmony_ci    if (how == -1 && PyErr_Occurred()) {
3847db96d56Sopenharmony_ci        goto exit;
3857db96d56Sopenharmony_ci    }
3867db96d56Sopenharmony_ci    if (!_Py_Sigset_Converter(args[1], &mask)) {
3877db96d56Sopenharmony_ci        goto exit;
3887db96d56Sopenharmony_ci    }
3897db96d56Sopenharmony_ci    return_value = signal_pthread_sigmask_impl(module, how, mask);
3907db96d56Sopenharmony_ci
3917db96d56Sopenharmony_ciexit:
3927db96d56Sopenharmony_ci    return return_value;
3937db96d56Sopenharmony_ci}
3947db96d56Sopenharmony_ci
3957db96d56Sopenharmony_ci#endif /* defined(HAVE_SIGSET_T) && defined(PYPTHREAD_SIGMASK) */
3967db96d56Sopenharmony_ci
3977db96d56Sopenharmony_ci#if defined(HAVE_SIGSET_T) && defined(HAVE_SIGPENDING)
3987db96d56Sopenharmony_ci
3997db96d56Sopenharmony_ciPyDoc_STRVAR(signal_sigpending__doc__,
4007db96d56Sopenharmony_ci"sigpending($module, /)\n"
4017db96d56Sopenharmony_ci"--\n"
4027db96d56Sopenharmony_ci"\n"
4037db96d56Sopenharmony_ci"Examine pending signals.\n"
4047db96d56Sopenharmony_ci"\n"
4057db96d56Sopenharmony_ci"Returns a set of signal numbers that are pending for delivery to\n"
4067db96d56Sopenharmony_ci"the calling thread.");
4077db96d56Sopenharmony_ci
4087db96d56Sopenharmony_ci#define SIGNAL_SIGPENDING_METHODDEF    \
4097db96d56Sopenharmony_ci    {"sigpending", (PyCFunction)signal_sigpending, METH_NOARGS, signal_sigpending__doc__},
4107db96d56Sopenharmony_ci
4117db96d56Sopenharmony_cistatic PyObject *
4127db96d56Sopenharmony_cisignal_sigpending_impl(PyObject *module);
4137db96d56Sopenharmony_ci
4147db96d56Sopenharmony_cistatic PyObject *
4157db96d56Sopenharmony_cisignal_sigpending(PyObject *module, PyObject *Py_UNUSED(ignored))
4167db96d56Sopenharmony_ci{
4177db96d56Sopenharmony_ci    return signal_sigpending_impl(module);
4187db96d56Sopenharmony_ci}
4197db96d56Sopenharmony_ci
4207db96d56Sopenharmony_ci#endif /* defined(HAVE_SIGSET_T) && defined(HAVE_SIGPENDING) */
4217db96d56Sopenharmony_ci
4227db96d56Sopenharmony_ci#if defined(HAVE_SIGSET_T) && defined(HAVE_SIGWAIT)
4237db96d56Sopenharmony_ci
4247db96d56Sopenharmony_ciPyDoc_STRVAR(signal_sigwait__doc__,
4257db96d56Sopenharmony_ci"sigwait($module, sigset, /)\n"
4267db96d56Sopenharmony_ci"--\n"
4277db96d56Sopenharmony_ci"\n"
4287db96d56Sopenharmony_ci"Wait for a signal.\n"
4297db96d56Sopenharmony_ci"\n"
4307db96d56Sopenharmony_ci"Suspend execution of the calling thread until the delivery of one of the\n"
4317db96d56Sopenharmony_ci"signals specified in the signal set sigset.  The function accepts the signal\n"
4327db96d56Sopenharmony_ci"and returns the signal number.");
4337db96d56Sopenharmony_ci
4347db96d56Sopenharmony_ci#define SIGNAL_SIGWAIT_METHODDEF    \
4357db96d56Sopenharmony_ci    {"sigwait", (PyCFunction)signal_sigwait, METH_O, signal_sigwait__doc__},
4367db96d56Sopenharmony_ci
4377db96d56Sopenharmony_cistatic PyObject *
4387db96d56Sopenharmony_cisignal_sigwait_impl(PyObject *module, sigset_t sigset);
4397db96d56Sopenharmony_ci
4407db96d56Sopenharmony_cistatic PyObject *
4417db96d56Sopenharmony_cisignal_sigwait(PyObject *module, PyObject *arg)
4427db96d56Sopenharmony_ci{
4437db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4447db96d56Sopenharmony_ci    sigset_t sigset;
4457db96d56Sopenharmony_ci
4467db96d56Sopenharmony_ci    if (!_Py_Sigset_Converter(arg, &sigset)) {
4477db96d56Sopenharmony_ci        goto exit;
4487db96d56Sopenharmony_ci    }
4497db96d56Sopenharmony_ci    return_value = signal_sigwait_impl(module, sigset);
4507db96d56Sopenharmony_ci
4517db96d56Sopenharmony_ciexit:
4527db96d56Sopenharmony_ci    return return_value;
4537db96d56Sopenharmony_ci}
4547db96d56Sopenharmony_ci
4557db96d56Sopenharmony_ci#endif /* defined(HAVE_SIGSET_T) && defined(HAVE_SIGWAIT) */
4567db96d56Sopenharmony_ci
4577db96d56Sopenharmony_ci#if ((defined(HAVE_SIGFILLSET) && defined(HAVE_SIGSET_T)) || defined(MS_WINDOWS))
4587db96d56Sopenharmony_ci
4597db96d56Sopenharmony_ciPyDoc_STRVAR(signal_valid_signals__doc__,
4607db96d56Sopenharmony_ci"valid_signals($module, /)\n"
4617db96d56Sopenharmony_ci"--\n"
4627db96d56Sopenharmony_ci"\n"
4637db96d56Sopenharmony_ci"Return a set of valid signal numbers on this platform.\n"
4647db96d56Sopenharmony_ci"\n"
4657db96d56Sopenharmony_ci"The signal numbers returned by this function can be safely passed to\n"
4667db96d56Sopenharmony_ci"functions like `pthread_sigmask`.");
4677db96d56Sopenharmony_ci
4687db96d56Sopenharmony_ci#define SIGNAL_VALID_SIGNALS_METHODDEF    \
4697db96d56Sopenharmony_ci    {"valid_signals", (PyCFunction)signal_valid_signals, METH_NOARGS, signal_valid_signals__doc__},
4707db96d56Sopenharmony_ci
4717db96d56Sopenharmony_cistatic PyObject *
4727db96d56Sopenharmony_cisignal_valid_signals_impl(PyObject *module);
4737db96d56Sopenharmony_ci
4747db96d56Sopenharmony_cistatic PyObject *
4757db96d56Sopenharmony_cisignal_valid_signals(PyObject *module, PyObject *Py_UNUSED(ignored))
4767db96d56Sopenharmony_ci{
4777db96d56Sopenharmony_ci    return signal_valid_signals_impl(module);
4787db96d56Sopenharmony_ci}
4797db96d56Sopenharmony_ci
4807db96d56Sopenharmony_ci#endif /* ((defined(HAVE_SIGFILLSET) && defined(HAVE_SIGSET_T)) || defined(MS_WINDOWS)) */
4817db96d56Sopenharmony_ci
4827db96d56Sopenharmony_ci#if defined(HAVE_SIGSET_T) && defined(HAVE_SIGWAITINFO)
4837db96d56Sopenharmony_ci
4847db96d56Sopenharmony_ciPyDoc_STRVAR(signal_sigwaitinfo__doc__,
4857db96d56Sopenharmony_ci"sigwaitinfo($module, sigset, /)\n"
4867db96d56Sopenharmony_ci"--\n"
4877db96d56Sopenharmony_ci"\n"
4887db96d56Sopenharmony_ci"Wait synchronously until one of the signals in *sigset* is delivered.\n"
4897db96d56Sopenharmony_ci"\n"
4907db96d56Sopenharmony_ci"Returns a struct_siginfo containing information about the signal.");
4917db96d56Sopenharmony_ci
4927db96d56Sopenharmony_ci#define SIGNAL_SIGWAITINFO_METHODDEF    \
4937db96d56Sopenharmony_ci    {"sigwaitinfo", (PyCFunction)signal_sigwaitinfo, METH_O, signal_sigwaitinfo__doc__},
4947db96d56Sopenharmony_ci
4957db96d56Sopenharmony_cistatic PyObject *
4967db96d56Sopenharmony_cisignal_sigwaitinfo_impl(PyObject *module, sigset_t sigset);
4977db96d56Sopenharmony_ci
4987db96d56Sopenharmony_cistatic PyObject *
4997db96d56Sopenharmony_cisignal_sigwaitinfo(PyObject *module, PyObject *arg)
5007db96d56Sopenharmony_ci{
5017db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5027db96d56Sopenharmony_ci    sigset_t sigset;
5037db96d56Sopenharmony_ci
5047db96d56Sopenharmony_ci    if (!_Py_Sigset_Converter(arg, &sigset)) {
5057db96d56Sopenharmony_ci        goto exit;
5067db96d56Sopenharmony_ci    }
5077db96d56Sopenharmony_ci    return_value = signal_sigwaitinfo_impl(module, sigset);
5087db96d56Sopenharmony_ci
5097db96d56Sopenharmony_ciexit:
5107db96d56Sopenharmony_ci    return return_value;
5117db96d56Sopenharmony_ci}
5127db96d56Sopenharmony_ci
5137db96d56Sopenharmony_ci#endif /* defined(HAVE_SIGSET_T) && defined(HAVE_SIGWAITINFO) */
5147db96d56Sopenharmony_ci
5157db96d56Sopenharmony_ci#if defined(HAVE_SIGSET_T) && defined(HAVE_SIGTIMEDWAIT)
5167db96d56Sopenharmony_ci
5177db96d56Sopenharmony_ciPyDoc_STRVAR(signal_sigtimedwait__doc__,
5187db96d56Sopenharmony_ci"sigtimedwait($module, sigset, timeout, /)\n"
5197db96d56Sopenharmony_ci"--\n"
5207db96d56Sopenharmony_ci"\n"
5217db96d56Sopenharmony_ci"Like sigwaitinfo(), but with a timeout.\n"
5227db96d56Sopenharmony_ci"\n"
5237db96d56Sopenharmony_ci"The timeout is specified in seconds, with floating point numbers allowed.");
5247db96d56Sopenharmony_ci
5257db96d56Sopenharmony_ci#define SIGNAL_SIGTIMEDWAIT_METHODDEF    \
5267db96d56Sopenharmony_ci    {"sigtimedwait", _PyCFunction_CAST(signal_sigtimedwait), METH_FASTCALL, signal_sigtimedwait__doc__},
5277db96d56Sopenharmony_ci
5287db96d56Sopenharmony_cistatic PyObject *
5297db96d56Sopenharmony_cisignal_sigtimedwait_impl(PyObject *module, sigset_t sigset,
5307db96d56Sopenharmony_ci                         PyObject *timeout_obj);
5317db96d56Sopenharmony_ci
5327db96d56Sopenharmony_cistatic PyObject *
5337db96d56Sopenharmony_cisignal_sigtimedwait(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
5347db96d56Sopenharmony_ci{
5357db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5367db96d56Sopenharmony_ci    sigset_t sigset;
5377db96d56Sopenharmony_ci    PyObject *timeout_obj;
5387db96d56Sopenharmony_ci
5397db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("sigtimedwait", nargs, 2, 2)) {
5407db96d56Sopenharmony_ci        goto exit;
5417db96d56Sopenharmony_ci    }
5427db96d56Sopenharmony_ci    if (!_Py_Sigset_Converter(args[0], &sigset)) {
5437db96d56Sopenharmony_ci        goto exit;
5447db96d56Sopenharmony_ci    }
5457db96d56Sopenharmony_ci    timeout_obj = args[1];
5467db96d56Sopenharmony_ci    return_value = signal_sigtimedwait_impl(module, sigset, timeout_obj);
5477db96d56Sopenharmony_ci
5487db96d56Sopenharmony_ciexit:
5497db96d56Sopenharmony_ci    return return_value;
5507db96d56Sopenharmony_ci}
5517db96d56Sopenharmony_ci
5527db96d56Sopenharmony_ci#endif /* defined(HAVE_SIGSET_T) && defined(HAVE_SIGTIMEDWAIT) */
5537db96d56Sopenharmony_ci
5547db96d56Sopenharmony_ci#if defined(HAVE_PTHREAD_KILL)
5557db96d56Sopenharmony_ci
5567db96d56Sopenharmony_ciPyDoc_STRVAR(signal_pthread_kill__doc__,
5577db96d56Sopenharmony_ci"pthread_kill($module, thread_id, signalnum, /)\n"
5587db96d56Sopenharmony_ci"--\n"
5597db96d56Sopenharmony_ci"\n"
5607db96d56Sopenharmony_ci"Send a signal to a thread.");
5617db96d56Sopenharmony_ci
5627db96d56Sopenharmony_ci#define SIGNAL_PTHREAD_KILL_METHODDEF    \
5637db96d56Sopenharmony_ci    {"pthread_kill", _PyCFunction_CAST(signal_pthread_kill), METH_FASTCALL, signal_pthread_kill__doc__},
5647db96d56Sopenharmony_ci
5657db96d56Sopenharmony_cistatic PyObject *
5667db96d56Sopenharmony_cisignal_pthread_kill_impl(PyObject *module, unsigned long thread_id,
5677db96d56Sopenharmony_ci                         int signalnum);
5687db96d56Sopenharmony_ci
5697db96d56Sopenharmony_cistatic PyObject *
5707db96d56Sopenharmony_cisignal_pthread_kill(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
5717db96d56Sopenharmony_ci{
5727db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5737db96d56Sopenharmony_ci    unsigned long thread_id;
5747db96d56Sopenharmony_ci    int signalnum;
5757db96d56Sopenharmony_ci
5767db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("pthread_kill", nargs, 2, 2)) {
5777db96d56Sopenharmony_ci        goto exit;
5787db96d56Sopenharmony_ci    }
5797db96d56Sopenharmony_ci    if (!PyLong_Check(args[0])) {
5807db96d56Sopenharmony_ci        _PyArg_BadArgument("pthread_kill", "argument 1", "int", args[0]);
5817db96d56Sopenharmony_ci        goto exit;
5827db96d56Sopenharmony_ci    }
5837db96d56Sopenharmony_ci    thread_id = PyLong_AsUnsignedLongMask(args[0]);
5847db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(args[1]);
5857db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
5867db96d56Sopenharmony_ci        goto exit;
5877db96d56Sopenharmony_ci    }
5887db96d56Sopenharmony_ci    return_value = signal_pthread_kill_impl(module, thread_id, signalnum);
5897db96d56Sopenharmony_ci
5907db96d56Sopenharmony_ciexit:
5917db96d56Sopenharmony_ci    return return_value;
5927db96d56Sopenharmony_ci}
5937db96d56Sopenharmony_ci
5947db96d56Sopenharmony_ci#endif /* defined(HAVE_PTHREAD_KILL) */
5957db96d56Sopenharmony_ci
5967db96d56Sopenharmony_ci#if (defined(__linux__) && defined(__NR_pidfd_send_signal))
5977db96d56Sopenharmony_ci
5987db96d56Sopenharmony_ciPyDoc_STRVAR(signal_pidfd_send_signal__doc__,
5997db96d56Sopenharmony_ci"pidfd_send_signal($module, pidfd, signalnum, siginfo=None, flags=0, /)\n"
6007db96d56Sopenharmony_ci"--\n"
6017db96d56Sopenharmony_ci"\n"
6027db96d56Sopenharmony_ci"Send a signal to a process referred to by a pid file descriptor.");
6037db96d56Sopenharmony_ci
6047db96d56Sopenharmony_ci#define SIGNAL_PIDFD_SEND_SIGNAL_METHODDEF    \
6057db96d56Sopenharmony_ci    {"pidfd_send_signal", _PyCFunction_CAST(signal_pidfd_send_signal), METH_FASTCALL, signal_pidfd_send_signal__doc__},
6067db96d56Sopenharmony_ci
6077db96d56Sopenharmony_cistatic PyObject *
6087db96d56Sopenharmony_cisignal_pidfd_send_signal_impl(PyObject *module, int pidfd, int signalnum,
6097db96d56Sopenharmony_ci                              PyObject *siginfo, int flags);
6107db96d56Sopenharmony_ci
6117db96d56Sopenharmony_cistatic PyObject *
6127db96d56Sopenharmony_cisignal_pidfd_send_signal(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
6137db96d56Sopenharmony_ci{
6147db96d56Sopenharmony_ci    PyObject *return_value = NULL;
6157db96d56Sopenharmony_ci    int pidfd;
6167db96d56Sopenharmony_ci    int signalnum;
6177db96d56Sopenharmony_ci    PyObject *siginfo = Py_None;
6187db96d56Sopenharmony_ci    int flags = 0;
6197db96d56Sopenharmony_ci
6207db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("pidfd_send_signal", nargs, 2, 4)) {
6217db96d56Sopenharmony_ci        goto exit;
6227db96d56Sopenharmony_ci    }
6237db96d56Sopenharmony_ci    pidfd = _PyLong_AsInt(args[0]);
6247db96d56Sopenharmony_ci    if (pidfd == -1 && PyErr_Occurred()) {
6257db96d56Sopenharmony_ci        goto exit;
6267db96d56Sopenharmony_ci    }
6277db96d56Sopenharmony_ci    signalnum = _PyLong_AsInt(args[1]);
6287db96d56Sopenharmony_ci    if (signalnum == -1 && PyErr_Occurred()) {
6297db96d56Sopenharmony_ci        goto exit;
6307db96d56Sopenharmony_ci    }
6317db96d56Sopenharmony_ci    if (nargs < 3) {
6327db96d56Sopenharmony_ci        goto skip_optional;
6337db96d56Sopenharmony_ci    }
6347db96d56Sopenharmony_ci    siginfo = args[2];
6357db96d56Sopenharmony_ci    if (nargs < 4) {
6367db96d56Sopenharmony_ci        goto skip_optional;
6377db96d56Sopenharmony_ci    }
6387db96d56Sopenharmony_ci    flags = _PyLong_AsInt(args[3]);
6397db96d56Sopenharmony_ci    if (flags == -1 && PyErr_Occurred()) {
6407db96d56Sopenharmony_ci        goto exit;
6417db96d56Sopenharmony_ci    }
6427db96d56Sopenharmony_ciskip_optional:
6437db96d56Sopenharmony_ci    return_value = signal_pidfd_send_signal_impl(module, pidfd, signalnum, siginfo, flags);
6447db96d56Sopenharmony_ci
6457db96d56Sopenharmony_ciexit:
6467db96d56Sopenharmony_ci    return return_value;
6477db96d56Sopenharmony_ci}
6487db96d56Sopenharmony_ci
6497db96d56Sopenharmony_ci#endif /* (defined(__linux__) && defined(__NR_pidfd_send_signal)) */
6507db96d56Sopenharmony_ci
6517db96d56Sopenharmony_ci#ifndef SIGNAL_ALARM_METHODDEF
6527db96d56Sopenharmony_ci    #define SIGNAL_ALARM_METHODDEF
6537db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_ALARM_METHODDEF) */
6547db96d56Sopenharmony_ci
6557db96d56Sopenharmony_ci#ifndef SIGNAL_PAUSE_METHODDEF
6567db96d56Sopenharmony_ci    #define SIGNAL_PAUSE_METHODDEF
6577db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_PAUSE_METHODDEF) */
6587db96d56Sopenharmony_ci
6597db96d56Sopenharmony_ci#ifndef SIGNAL_SIGINTERRUPT_METHODDEF
6607db96d56Sopenharmony_ci    #define SIGNAL_SIGINTERRUPT_METHODDEF
6617db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_SIGINTERRUPT_METHODDEF) */
6627db96d56Sopenharmony_ci
6637db96d56Sopenharmony_ci#ifndef SIGNAL_SETITIMER_METHODDEF
6647db96d56Sopenharmony_ci    #define SIGNAL_SETITIMER_METHODDEF
6657db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_SETITIMER_METHODDEF) */
6667db96d56Sopenharmony_ci
6677db96d56Sopenharmony_ci#ifndef SIGNAL_GETITIMER_METHODDEF
6687db96d56Sopenharmony_ci    #define SIGNAL_GETITIMER_METHODDEF
6697db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_GETITIMER_METHODDEF) */
6707db96d56Sopenharmony_ci
6717db96d56Sopenharmony_ci#ifndef SIGNAL_PTHREAD_SIGMASK_METHODDEF
6727db96d56Sopenharmony_ci    #define SIGNAL_PTHREAD_SIGMASK_METHODDEF
6737db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_PTHREAD_SIGMASK_METHODDEF) */
6747db96d56Sopenharmony_ci
6757db96d56Sopenharmony_ci#ifndef SIGNAL_SIGPENDING_METHODDEF
6767db96d56Sopenharmony_ci    #define SIGNAL_SIGPENDING_METHODDEF
6777db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_SIGPENDING_METHODDEF) */
6787db96d56Sopenharmony_ci
6797db96d56Sopenharmony_ci#ifndef SIGNAL_SIGWAIT_METHODDEF
6807db96d56Sopenharmony_ci    #define SIGNAL_SIGWAIT_METHODDEF
6817db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_SIGWAIT_METHODDEF) */
6827db96d56Sopenharmony_ci
6837db96d56Sopenharmony_ci#ifndef SIGNAL_VALID_SIGNALS_METHODDEF
6847db96d56Sopenharmony_ci    #define SIGNAL_VALID_SIGNALS_METHODDEF
6857db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_VALID_SIGNALS_METHODDEF) */
6867db96d56Sopenharmony_ci
6877db96d56Sopenharmony_ci#ifndef SIGNAL_SIGWAITINFO_METHODDEF
6887db96d56Sopenharmony_ci    #define SIGNAL_SIGWAITINFO_METHODDEF
6897db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_SIGWAITINFO_METHODDEF) */
6907db96d56Sopenharmony_ci
6917db96d56Sopenharmony_ci#ifndef SIGNAL_SIGTIMEDWAIT_METHODDEF
6927db96d56Sopenharmony_ci    #define SIGNAL_SIGTIMEDWAIT_METHODDEF
6937db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_SIGTIMEDWAIT_METHODDEF) */
6947db96d56Sopenharmony_ci
6957db96d56Sopenharmony_ci#ifndef SIGNAL_PTHREAD_KILL_METHODDEF
6967db96d56Sopenharmony_ci    #define SIGNAL_PTHREAD_KILL_METHODDEF
6977db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_PTHREAD_KILL_METHODDEF) */
6987db96d56Sopenharmony_ci
6997db96d56Sopenharmony_ci#ifndef SIGNAL_PIDFD_SEND_SIGNAL_METHODDEF
7007db96d56Sopenharmony_ci    #define SIGNAL_PIDFD_SEND_SIGNAL_METHODDEF
7017db96d56Sopenharmony_ci#endif /* !defined(SIGNAL_PIDFD_SEND_SIGNAL_METHODDEF) */
7027db96d56Sopenharmony_ci/*[clinic end generated code: output=9b3f9f1ae2ac2b94 input=a9049054013a1b77]*/
703