blob: eca2da10ad33505bfdfff432975b26e9934b8049 [file] [log] [blame]
Tal Einatc7027b72015-05-16 14:14:49 +03001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5#if defined(HAVE_ALARM)
6
7PyDoc_STRVAR(signal_alarm__doc__,
8"alarm($module, seconds, /)\n"
9"--\n"
10"\n"
11"Arrange for SIGALRM to arrive after the given number of seconds.");
12
13#define SIGNAL_ALARM_METHODDEF \
14 {"alarm", (PyCFunction)signal_alarm, METH_O, signal_alarm__doc__},
15
16static long
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030017signal_alarm_impl(PyObject *module, int seconds);
Tal Einatc7027b72015-05-16 14:14:49 +030018
19static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030020signal_alarm(PyObject *module, PyObject *arg)
Tal Einatc7027b72015-05-16 14:14:49 +030021{
22 PyObject *return_value = NULL;
23 int seconds;
24 long _return_value;
25
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030026 if (!PyArg_Parse(arg, "i:alarm", &seconds)) {
Tal Einatc7027b72015-05-16 14:14:49 +030027 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030028 }
Tal Einatc7027b72015-05-16 14:14:49 +030029 _return_value = signal_alarm_impl(module, seconds);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030030 if ((_return_value == -1) && PyErr_Occurred()) {
Tal Einatc7027b72015-05-16 14:14:49 +030031 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030032 }
Tal Einatc7027b72015-05-16 14:14:49 +030033 return_value = PyLong_FromLong(_return_value);
34
35exit:
36 return return_value;
37}
38
39#endif /* defined(HAVE_ALARM) */
40
41#if defined(HAVE_PAUSE)
42
43PyDoc_STRVAR(signal_pause__doc__,
44"pause($module, /)\n"
45"--\n"
46"\n"
47"Wait until a signal arrives.");
48
49#define SIGNAL_PAUSE_METHODDEF \
50 {"pause", (PyCFunction)signal_pause, METH_NOARGS, signal_pause__doc__},
51
52static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030053signal_pause_impl(PyObject *module);
Tal Einatc7027b72015-05-16 14:14:49 +030054
55static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030056signal_pause(PyObject *module, PyObject *Py_UNUSED(ignored))
Tal Einatc7027b72015-05-16 14:14:49 +030057{
58 return signal_pause_impl(module);
59}
60
61#endif /* defined(HAVE_PAUSE) */
62
63PyDoc_STRVAR(signal_signal__doc__,
64"signal($module, signalnum, handler, /)\n"
65"--\n"
66"\n"
67"Set the action for the given signal.\n"
68"\n"
69"The action can be SIG_DFL, SIG_IGN, or a callable Python object.\n"
70"The previous action is returned. See getsignal() for possible return values.\n"
71"\n"
72"*** IMPORTANT NOTICE ***\n"
73"A signal handler function is called with two arguments:\n"
74"the first is the signal number, the second is the interrupted stack frame.");
75
76#define SIGNAL_SIGNAL_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +010077 {"signal", (PyCFunction)signal_signal, METH_FASTCALL, signal_signal__doc__},
Tal Einatc7027b72015-05-16 14:14:49 +030078
79static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030080signal_signal_impl(PyObject *module, int signalnum, PyObject *handler);
Tal Einatc7027b72015-05-16 14:14:49 +030081
82static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +020083signal_signal(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Tal Einatc7027b72015-05-16 14:14:49 +030084{
85 PyObject *return_value = NULL;
86 int signalnum;
87 PyObject *handler;
88
Sylvain74453812017-06-10 06:51:48 +020089 if (!_PyArg_ParseStack(args, nargs, "iO:signal",
90 &signalnum, &handler)) {
Victor Stinner259f0e42017-01-17 01:35:17 +010091 goto exit;
92 }
Tal Einatc7027b72015-05-16 14:14:49 +030093 return_value = signal_signal_impl(module, signalnum, handler);
94
95exit:
96 return return_value;
97}
98
99PyDoc_STRVAR(signal_getsignal__doc__,
100"getsignal($module, signalnum, /)\n"
101"--\n"
102"\n"
103"Return the current action for the given signal.\n"
104"\n"
105"The return value can be:\n"
106" SIG_IGN -- if the signal is being ignored\n"
107" SIG_DFL -- if the default action for the signal is in effect\n"
108" None -- if an unknown handler is in effect\n"
109" anything else -- the callable Python object used as a handler");
110
111#define SIGNAL_GETSIGNAL_METHODDEF \
112 {"getsignal", (PyCFunction)signal_getsignal, METH_O, signal_getsignal__doc__},
113
114static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300115signal_getsignal_impl(PyObject *module, int signalnum);
Tal Einatc7027b72015-05-16 14:14:49 +0300116
117static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300118signal_getsignal(PyObject *module, PyObject *arg)
Tal Einatc7027b72015-05-16 14:14:49 +0300119{
120 PyObject *return_value = NULL;
121 int signalnum;
122
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300123 if (!PyArg_Parse(arg, "i:getsignal", &signalnum)) {
Tal Einatc7027b72015-05-16 14:14:49 +0300124 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300125 }
Tal Einatc7027b72015-05-16 14:14:49 +0300126 return_value = signal_getsignal_impl(module, signalnum);
127
128exit:
129 return return_value;
130}
131
Antoine Pietri5d2a27d2018-03-12 14:42:34 +0100132PyDoc_STRVAR(signal_strsignal__doc__,
133"strsignal($module, signalnum, /)\n"
134"--\n"
135"\n"
136"Return the system description of the given signal.\n"
137"\n"
138"The return values can be such as \"Interrupt\", \"Segmentation fault\", etc.\n"
139"Returns None if the signal is not recognized.");
140
141#define SIGNAL_STRSIGNAL_METHODDEF \
142 {"strsignal", (PyCFunction)signal_strsignal, METH_O, signal_strsignal__doc__},
143
144static PyObject *
145signal_strsignal_impl(PyObject *module, int signalnum);
146
147static PyObject *
148signal_strsignal(PyObject *module, PyObject *arg)
149{
150 PyObject *return_value = NULL;
151 int signalnum;
152
153 if (!PyArg_Parse(arg, "i:strsignal", &signalnum)) {
154 goto exit;
155 }
156 return_value = signal_strsignal_impl(module, signalnum);
157
158exit:
159 return return_value;
160}
161
Tal Einatc7027b72015-05-16 14:14:49 +0300162#if defined(HAVE_SIGINTERRUPT)
163
164PyDoc_STRVAR(signal_siginterrupt__doc__,
165"siginterrupt($module, signalnum, flag, /)\n"
166"--\n"
167"\n"
168"Change system call restart behaviour.\n"
169"\n"
170"If flag is False, system calls will be restarted when interrupted by\n"
171"signal sig, else system calls will be interrupted.");
172
173#define SIGNAL_SIGINTERRUPT_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100174 {"siginterrupt", (PyCFunction)signal_siginterrupt, METH_FASTCALL, signal_siginterrupt__doc__},
Tal Einatc7027b72015-05-16 14:14:49 +0300175
176static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300177signal_siginterrupt_impl(PyObject *module, int signalnum, int flag);
Tal Einatc7027b72015-05-16 14:14:49 +0300178
179static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200180signal_siginterrupt(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Tal Einatc7027b72015-05-16 14:14:49 +0300181{
182 PyObject *return_value = NULL;
183 int signalnum;
184 int flag;
185
Sylvain74453812017-06-10 06:51:48 +0200186 if (!_PyArg_ParseStack(args, nargs, "ii:siginterrupt",
187 &signalnum, &flag)) {
Victor Stinner259f0e42017-01-17 01:35:17 +0100188 goto exit;
189 }
Tal Einatc7027b72015-05-16 14:14:49 +0300190 return_value = signal_siginterrupt_impl(module, signalnum, flag);
191
192exit:
193 return return_value;
194}
195
196#endif /* defined(HAVE_SIGINTERRUPT) */
197
198#if defined(HAVE_SETITIMER)
199
200PyDoc_STRVAR(signal_setitimer__doc__,
201"setitimer($module, which, seconds, interval=0.0, /)\n"
202"--\n"
203"\n"
204"Sets given itimer (one of ITIMER_REAL, ITIMER_VIRTUAL or ITIMER_PROF).\n"
205"\n"
206"The timer will fire after value seconds and after that every interval seconds.\n"
207"The itimer can be cleared by setting seconds to zero.\n"
208"\n"
209"Returns old values as a tuple: (delay, interval).");
210
211#define SIGNAL_SETITIMER_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100212 {"setitimer", (PyCFunction)signal_setitimer, METH_FASTCALL, signal_setitimer__doc__},
Tal Einatc7027b72015-05-16 14:14:49 +0300213
214static PyObject *
Victor Stinneref611c92017-10-13 13:49:43 -0700215signal_setitimer_impl(PyObject *module, int which, PyObject *seconds,
216 PyObject *interval);
Tal Einatc7027b72015-05-16 14:14:49 +0300217
218static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200219signal_setitimer(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Tal Einatc7027b72015-05-16 14:14:49 +0300220{
221 PyObject *return_value = NULL;
222 int which;
Victor Stinneref611c92017-10-13 13:49:43 -0700223 PyObject *seconds;
224 PyObject *interval = NULL;
Tal Einatc7027b72015-05-16 14:14:49 +0300225
Victor Stinneref611c92017-10-13 13:49:43 -0700226 if (!_PyArg_ParseStack(args, nargs, "iO|O:setitimer",
Sylvain74453812017-06-10 06:51:48 +0200227 &which, &seconds, &interval)) {
Victor Stinner259f0e42017-01-17 01:35:17 +0100228 goto exit;
229 }
Tal Einatc7027b72015-05-16 14:14:49 +0300230 return_value = signal_setitimer_impl(module, which, seconds, interval);
231
232exit:
233 return return_value;
234}
235
236#endif /* defined(HAVE_SETITIMER) */
237
238#if defined(HAVE_GETITIMER)
239
240PyDoc_STRVAR(signal_getitimer__doc__,
241"getitimer($module, which, /)\n"
242"--\n"
243"\n"
244"Returns current value of given itimer.");
245
246#define SIGNAL_GETITIMER_METHODDEF \
247 {"getitimer", (PyCFunction)signal_getitimer, METH_O, signal_getitimer__doc__},
248
249static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300250signal_getitimer_impl(PyObject *module, int which);
Tal Einatc7027b72015-05-16 14:14:49 +0300251
252static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300253signal_getitimer(PyObject *module, PyObject *arg)
Tal Einatc7027b72015-05-16 14:14:49 +0300254{
255 PyObject *return_value = NULL;
256 int which;
257
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300258 if (!PyArg_Parse(arg, "i:getitimer", &which)) {
Tal Einatc7027b72015-05-16 14:14:49 +0300259 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300260 }
Tal Einatc7027b72015-05-16 14:14:49 +0300261 return_value = signal_getitimer_impl(module, which);
262
263exit:
264 return return_value;
265}
266
267#endif /* defined(HAVE_GETITIMER) */
268
269#if defined(PYPTHREAD_SIGMASK)
270
271PyDoc_STRVAR(signal_pthread_sigmask__doc__,
272"pthread_sigmask($module, how, mask, /)\n"
273"--\n"
274"\n"
275"Fetch and/or change the signal mask of the calling thread.");
276
277#define SIGNAL_PTHREAD_SIGMASK_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100278 {"pthread_sigmask", (PyCFunction)signal_pthread_sigmask, METH_FASTCALL, signal_pthread_sigmask__doc__},
Tal Einatc7027b72015-05-16 14:14:49 +0300279
280static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300281signal_pthread_sigmask_impl(PyObject *module, int how, PyObject *mask);
Tal Einatc7027b72015-05-16 14:14:49 +0300282
283static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200284signal_pthread_sigmask(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Tal Einatc7027b72015-05-16 14:14:49 +0300285{
286 PyObject *return_value = NULL;
287 int how;
288 PyObject *mask;
289
Sylvain74453812017-06-10 06:51:48 +0200290 if (!_PyArg_ParseStack(args, nargs, "iO:pthread_sigmask",
291 &how, &mask)) {
Victor Stinner259f0e42017-01-17 01:35:17 +0100292 goto exit;
293 }
Tal Einatc7027b72015-05-16 14:14:49 +0300294 return_value = signal_pthread_sigmask_impl(module, how, mask);
295
296exit:
297 return return_value;
298}
299
300#endif /* defined(PYPTHREAD_SIGMASK) */
301
302#if defined(HAVE_SIGPENDING)
303
304PyDoc_STRVAR(signal_sigpending__doc__,
305"sigpending($module, /)\n"
306"--\n"
307"\n"
308"Examine pending signals.\n"
309"\n"
310"Returns a set of signal numbers that are pending for delivery to\n"
311"the calling thread.");
312
313#define SIGNAL_SIGPENDING_METHODDEF \
314 {"sigpending", (PyCFunction)signal_sigpending, METH_NOARGS, signal_sigpending__doc__},
315
316static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300317signal_sigpending_impl(PyObject *module);
Tal Einatc7027b72015-05-16 14:14:49 +0300318
319static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300320signal_sigpending(PyObject *module, PyObject *Py_UNUSED(ignored))
Tal Einatc7027b72015-05-16 14:14:49 +0300321{
322 return signal_sigpending_impl(module);
323}
324
325#endif /* defined(HAVE_SIGPENDING) */
326
327#if defined(HAVE_SIGWAIT)
328
329PyDoc_STRVAR(signal_sigwait__doc__,
330"sigwait($module, sigset, /)\n"
331"--\n"
332"\n"
333"Wait for a signal.\n"
334"\n"
335"Suspend execution of the calling thread until the delivery of one of the\n"
336"signals specified in the signal set sigset. The function accepts the signal\n"
337"and returns the signal number.");
338
339#define SIGNAL_SIGWAIT_METHODDEF \
340 {"sigwait", (PyCFunction)signal_sigwait, METH_O, signal_sigwait__doc__},
341
342#endif /* defined(HAVE_SIGWAIT) */
343
Antoine Pitrou9d3627e2018-05-04 13:00:50 +0200344#if (defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS))
345
346PyDoc_STRVAR(signal_valid_signals__doc__,
347"valid_signals($module, /)\n"
348"--\n"
349"\n"
350"Return a set of valid signal numbers on this platform.\n"
351"\n"
352"The signal numbers returned by this function can be safely passed to\n"
353"functions like `pthread_sigmask`.");
354
355#define SIGNAL_VALID_SIGNALS_METHODDEF \
356 {"valid_signals", (PyCFunction)signal_valid_signals, METH_NOARGS, signal_valid_signals__doc__},
357
358static PyObject *
359signal_valid_signals_impl(PyObject *module);
360
361static PyObject *
362signal_valid_signals(PyObject *module, PyObject *Py_UNUSED(ignored))
363{
364 return signal_valid_signals_impl(module);
365}
366
367#endif /* (defined(HAVE_SIGFILLSET) || defined(MS_WINDOWS)) */
368
Tal Einatc7027b72015-05-16 14:14:49 +0300369#if defined(HAVE_SIGWAITINFO)
370
371PyDoc_STRVAR(signal_sigwaitinfo__doc__,
372"sigwaitinfo($module, sigset, /)\n"
373"--\n"
374"\n"
375"Wait synchronously until one of the signals in *sigset* is delivered.\n"
376"\n"
377"Returns a struct_siginfo containing information about the signal.");
378
379#define SIGNAL_SIGWAITINFO_METHODDEF \
380 {"sigwaitinfo", (PyCFunction)signal_sigwaitinfo, METH_O, signal_sigwaitinfo__doc__},
381
382#endif /* defined(HAVE_SIGWAITINFO) */
383
384#if defined(HAVE_SIGTIMEDWAIT)
385
386PyDoc_STRVAR(signal_sigtimedwait__doc__,
387"sigtimedwait($module, sigset, timeout, /)\n"
388"--\n"
389"\n"
390"Like sigwaitinfo(), but with a timeout.\n"
391"\n"
392"The timeout is specified in seconds, with floating point numbers allowed.");
393
394#define SIGNAL_SIGTIMEDWAIT_METHODDEF \
Victor Stinner0c4a8282017-01-17 02:21:47 +0100395 {"sigtimedwait", (PyCFunction)signal_sigtimedwait, METH_FASTCALL, signal_sigtimedwait__doc__},
Tal Einatc7027b72015-05-16 14:14:49 +0300396
397static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300398signal_sigtimedwait_impl(PyObject *module, PyObject *sigset,
Serhiy Storchaka6b680cd2015-05-16 15:57:56 +0300399 PyObject *timeout_obj);
Tal Einatc7027b72015-05-16 14:14:49 +0300400
401static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200402signal_sigtimedwait(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Tal Einatc7027b72015-05-16 14:14:49 +0300403{
404 PyObject *return_value = NULL;
405 PyObject *sigset;
Serhiy Storchaka6b680cd2015-05-16 15:57:56 +0300406 PyObject *timeout_obj;
Tal Einatc7027b72015-05-16 14:14:49 +0300407
Sylvain74453812017-06-10 06:51:48 +0200408 if (!_PyArg_UnpackStack(args, nargs, "sigtimedwait",
409 2, 2,
410 &sigset, &timeout_obj)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100411 goto exit;
412 }
Serhiy Storchaka6b680cd2015-05-16 15:57:56 +0300413 return_value = signal_sigtimedwait_impl(module, sigset, timeout_obj);
Tal Einatc7027b72015-05-16 14:14:49 +0300414
415exit:
416 return return_value;
417}
418
419#endif /* defined(HAVE_SIGTIMEDWAIT) */
420
Antoine Pitroua6a4dc82017-09-07 18:56:24 +0200421#if defined(HAVE_PTHREAD_KILL)
Tal Einatc7027b72015-05-16 14:14:49 +0300422
423PyDoc_STRVAR(signal_pthread_kill__doc__,
424"pthread_kill($module, thread_id, signalnum, /)\n"
425"--\n"
426"\n"
427"Send a signal to a thread.");
428
429#define SIGNAL_PTHREAD_KILL_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100430 {"pthread_kill", (PyCFunction)signal_pthread_kill, METH_FASTCALL, signal_pthread_kill__doc__},
Tal Einatc7027b72015-05-16 14:14:49 +0300431
432static PyObject *
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200433signal_pthread_kill_impl(PyObject *module, unsigned long thread_id,
434 int signalnum);
Tal Einatc7027b72015-05-16 14:14:49 +0300435
436static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200437signal_pthread_kill(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Tal Einatc7027b72015-05-16 14:14:49 +0300438{
439 PyObject *return_value = NULL;
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200440 unsigned long thread_id;
Tal Einatc7027b72015-05-16 14:14:49 +0300441 int signalnum;
442
Sylvain74453812017-06-10 06:51:48 +0200443 if (!_PyArg_ParseStack(args, nargs, "ki:pthread_kill",
444 &thread_id, &signalnum)) {
Victor Stinner259f0e42017-01-17 01:35:17 +0100445 goto exit;
446 }
Tal Einatc7027b72015-05-16 14:14:49 +0300447 return_value = signal_pthread_kill_impl(module, thread_id, signalnum);
448
449exit:
450 return return_value;
451}
452
Antoine Pitroua6a4dc82017-09-07 18:56:24 +0200453#endif /* defined(HAVE_PTHREAD_KILL) */
Tal Einatc7027b72015-05-16 14:14:49 +0300454
455#ifndef SIGNAL_ALARM_METHODDEF
456 #define SIGNAL_ALARM_METHODDEF
457#endif /* !defined(SIGNAL_ALARM_METHODDEF) */
458
459#ifndef SIGNAL_PAUSE_METHODDEF
460 #define SIGNAL_PAUSE_METHODDEF
461#endif /* !defined(SIGNAL_PAUSE_METHODDEF) */
462
463#ifndef SIGNAL_SIGINTERRUPT_METHODDEF
464 #define SIGNAL_SIGINTERRUPT_METHODDEF
465#endif /* !defined(SIGNAL_SIGINTERRUPT_METHODDEF) */
466
467#ifndef SIGNAL_SETITIMER_METHODDEF
468 #define SIGNAL_SETITIMER_METHODDEF
469#endif /* !defined(SIGNAL_SETITIMER_METHODDEF) */
470
471#ifndef SIGNAL_GETITIMER_METHODDEF
472 #define SIGNAL_GETITIMER_METHODDEF
473#endif /* !defined(SIGNAL_GETITIMER_METHODDEF) */
474
475#ifndef SIGNAL_PTHREAD_SIGMASK_METHODDEF
476 #define SIGNAL_PTHREAD_SIGMASK_METHODDEF
477#endif /* !defined(SIGNAL_PTHREAD_SIGMASK_METHODDEF) */
478
479#ifndef SIGNAL_SIGPENDING_METHODDEF
480 #define SIGNAL_SIGPENDING_METHODDEF
481#endif /* !defined(SIGNAL_SIGPENDING_METHODDEF) */
482
483#ifndef SIGNAL_SIGWAIT_METHODDEF
484 #define SIGNAL_SIGWAIT_METHODDEF
485#endif /* !defined(SIGNAL_SIGWAIT_METHODDEF) */
486
Antoine Pitrou9d3627e2018-05-04 13:00:50 +0200487#ifndef SIGNAL_VALID_SIGNALS_METHODDEF
488 #define SIGNAL_VALID_SIGNALS_METHODDEF
489#endif /* !defined(SIGNAL_VALID_SIGNALS_METHODDEF) */
490
Tal Einatc7027b72015-05-16 14:14:49 +0300491#ifndef SIGNAL_SIGWAITINFO_METHODDEF
492 #define SIGNAL_SIGWAITINFO_METHODDEF
493#endif /* !defined(SIGNAL_SIGWAITINFO_METHODDEF) */
494
495#ifndef SIGNAL_SIGTIMEDWAIT_METHODDEF
496 #define SIGNAL_SIGTIMEDWAIT_METHODDEF
497#endif /* !defined(SIGNAL_SIGTIMEDWAIT_METHODDEF) */
498
499#ifndef SIGNAL_PTHREAD_KILL_METHODDEF
500 #define SIGNAL_PTHREAD_KILL_METHODDEF
501#endif /* !defined(SIGNAL_PTHREAD_KILL_METHODDEF) */
Antoine Pitrou9d3627e2018-05-04 13:00:50 +0200502/*[clinic end generated code: output=f35d79e0cfee3f1b input=a9049054013a1b77]*/