annotate Modules/signalmodule.c @ 78069:a8aa77458e12 3.2

Add c_size_t and c_ssize_t to the ctypes summary table.
author Antoine Pitrou <solipsis@pitrou.net>
date Thu, 12 Jul 2012 20:31:50 +0200
parents 7b24dd587a7b
children ba45976c2801 a0100852b6fe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
1
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
2 /* Signal module -- many thanks to Lance Ellinghaus */
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
5287
5af766a1b531 Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents: 5101
diff changeset
4 /* XXX Signals should be recorded per thread, now we have thread state. */
5af766a1b531 Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents: 5101
diff changeset
5
1888
be956b1efb97 * various modules: #include "Python.h" and remove most remporary
Guido van Rossum <guido@python.org>
parents: 1867
diff changeset
6 #include "Python.h"
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23843
diff changeset
8 #ifdef MS_WINDOWS
63779
76864ac5b67d Include Windows.h for BOOL. 2.7 and 3.2 already had this due to
Brian Curtin <brian.curtin@gmail.com>
parents: 63777
diff changeset
9 #include <Windows.h>
76864ac5b67d Include Windows.h for BOOL. 2.7 and 3.2 already had this due to
Brian Curtin <brian.curtin@gmail.com>
parents: 63777
diff changeset
10 #ifdef HAVE_PROCESS_H
5287
5af766a1b531 Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents: 5101
diff changeset
11 #include <process.h>
5af766a1b531 Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents: 5101
diff changeset
12 #endif
63779
76864ac5b67d Include Windows.h for BOOL. 2.7 and 3.2 already had this due to
Brian Curtin <brian.curtin@gmail.com>
parents: 63777
diff changeset
13 #endif
5287
5af766a1b531 Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents: 5101
diff changeset
14
59872
c53f6a3d2d3b Merged revisions 78338,78345-78346,78561-78562,78566,78574,78581,78634,78660,78675 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55913
diff changeset
15 #ifdef HAVE_SIGNAL_H
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 #include <signal.h>
59872
c53f6a3d2d3b Merged revisions 78338,78345-78346,78561-78562,78566,78574,78581,78634,78660,78675 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55913
diff changeset
17 #endif
c53f6a3d2d3b Merged revisions 78338,78345-78346,78561-78562,78566,78574,78581,78634,78660,78675 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55913
diff changeset
18 #ifdef HAVE_SYS_STAT_H
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
19 #include <sys/stat.h>
59872
c53f6a3d2d3b Merged revisions 78338,78345-78346,78561-78562,78566,78574,78581,78634,78660,78675 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55913
diff changeset
20 #endif
46056
b2f3e46e78a2 Merged revisions 61849 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 46054
diff changeset
21 #ifdef HAVE_SYS_TIME_H
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
22 #include <sys/time.h>
46056
b2f3e46e78a2 Merged revisions 61849 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 46054
diff changeset
23 #endif
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
24
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
25 #ifndef SIG_ERR
14638
2e170c2f61e1 Use typedef PyOS_sighandler_t and APIs PyOS_getsig() and
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
26 #define SIG_ERR ((PyOS_sighandler_t)(-1))
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
27 #endif
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
28
22114
c454b76d51e7 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21715
diff changeset
29 #if defined(PYOS_OS2) && !defined(PYCC_GCC)
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
30 #define NSIG 12
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
31 #include <process.h>
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
32 #endif
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
33
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
34 #ifndef NSIG
13338
a7f72022b93a Fixed symbol search for defining NSIG. It now also checks _NSIG
Marc-André Lemburg <mal@egenix.com>
parents: 13256
diff changeset
35 # if defined(_NSIG)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
36 # define NSIG _NSIG /* For BSD/SysV */
13338
a7f72022b93a Fixed symbol search for defining NSIG. It now also checks _NSIG
Marc-André Lemburg <mal@egenix.com>
parents: 13256
diff changeset
37 # elif defined(_SIGMAX)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
38 # define NSIG (_SIGMAX + 1) /* For QNX */
13338
a7f72022b93a Fixed symbol search for defining NSIG. It now also checks _NSIG
Marc-André Lemburg <mal@egenix.com>
parents: 13256
diff changeset
39 # elif defined(SIGMAX)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
40 # define NSIG (SIGMAX + 1) /* For djgpp */
13338
a7f72022b93a Fixed symbol search for defining NSIG. It now also checks _NSIG
Marc-André Lemburg <mal@egenix.com>
parents: 13256
diff changeset
41 # else
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
42 # define NSIG 64 /* Use a reasonable default value */
13338
a7f72022b93a Fixed symbol search for defining NSIG. It now also checks _NSIG
Marc-André Lemburg <mal@egenix.com>
parents: 13256
diff changeset
43 # endif
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
44 #endif
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
45
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
46
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
47 /*
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
48 NOTES ON THE INTERACTION BETWEEN SIGNALS AND THREADS
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
49
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
50 When threads are supported, we want the following semantics:
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
51
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
52 - only the main thread can set a signal handler
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
53 - any thread can get a signal handler
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
54 - signals are only delivered to the main thread
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
55
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
56 I.e. we don't support "synchronous signals" like SIGFPE (catching
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
57 this doesn't make much sense in Python anyway) nor do we support
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
58 signals as a means of inter-thread communication, since not all
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
59 thread implementations support that (at least our thread library
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
60 doesn't).
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
61
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
62 We still have the problem that in some implementations signals
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
63 generated by the keyboard (e.g. SIGINT) are delivered to all
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
64 threads (e.g. SGI), while in others (e.g. Solaris) such signals are
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
65 delivered to one random thread (an intermediate possibility would
2126
af36bae343fc cosmetics
Guido van Rossum <guido@python.org>
parents: 2123
diff changeset
66 be to deliver it to the main thread -- POSIX?). For now, we have
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
67 a working implementation that works in all three cases -- the
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
68 handler ignores signals if getpid() isn't the same as in the main
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
69 thread. XXX This is a hack.
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
70
14674
756c8c6535fe Make better use of GNU Pth -- patch by Andy Dustman.
Guido van Rossum <guido@python.org>
parents: 14638
diff changeset
71 GNU pth is a user-space threading library, and as such, all threads
756c8c6535fe Make better use of GNU Pth -- patch by Andy Dustman.
Guido van Rossum <guido@python.org>
parents: 14638
diff changeset
72 run within the same process. In this case, if the currently running
756c8c6535fe Make better use of GNU Pth -- patch by Andy Dustman.
Guido van Rossum <guido@python.org>
parents: 14638
diff changeset
73 thread is not the main_thread, send the signal to the main_thread.
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
74 */
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
75
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
76 #ifdef WITH_THREAD
5730
996079744566 Add sys/types.h include for pid_t when threading.
Guido van Rossum <guido@python.org>
parents: 5287
diff changeset
77 #include <sys/types.h> /* For pid_t */
9203
07dae6fdae79 Renamed thread.h to pythread.h.
Guido van Rossum <guido@python.org>
parents: 9127
diff changeset
78 #include "pythread.h"
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
79 static long main_thread;
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
80 static pid_t main_pid;
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
81 #endif
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
82
70137
945ca78c38b1 Issue #12060: Use sig_atomic_t type and volatile keyword in the signal module.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69423
diff changeset
83 static volatile struct {
945ca78c38b1 Issue #12060: Use sig_atomic_t type and volatile keyword in the signal module.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69423
diff changeset
84 sig_atomic_t tripped;
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
85 PyObject *func;
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
86 } Handlers[NSIG];
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
87
70137
945ca78c38b1 Issue #12060: Use sig_atomic_t type and volatile keyword in the signal module.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69423
diff changeset
88 static volatile sig_atomic_t wakeup_fd = -1;
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
89
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
90 /* Speed up sigcheck() when none tripped */
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
91 static volatile sig_atomic_t is_tripped = 0;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
92
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
93 static PyObject *DefaultHandler;
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
94 static PyObject *IgnoreHandler;
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
95 static PyObject *IntHandler;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
96
16998
4f9db834825c Document SIG_* warning causes on Solaris.
Martin v. Löwis <martin@v.loewis.de>
parents: 14674
diff changeset
97 /* On Solaris 8, gcc will produce a warning that the function
4f9db834825c Document SIG_* warning causes on Solaris.
Martin v. Löwis <martin@v.loewis.de>
parents: 14674
diff changeset
98 declaration is not a prototype. This is caused by the definition of
4f9db834825c Document SIG_* warning causes on Solaris.
Martin v. Löwis <martin@v.loewis.de>
parents: 14674
diff changeset
99 SIG_DFL as (void (*)())0; the correct declaration would have been
4f9db834825c Document SIG_* warning causes on Solaris.
Martin v. Löwis <martin@v.loewis.de>
parents: 14674
diff changeset
100 (void (*)(int))0. */
4f9db834825c Document SIG_* warning causes on Solaris.
Martin v. Löwis <martin@v.loewis.de>
parents: 14674
diff changeset
101
14638
2e170c2f61e1 Use typedef PyOS_sighandler_t and APIs PyOS_getsig() and
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
102 static PyOS_sighandler_t old_siginthandler = SIG_DFL;
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
103
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
104 #ifdef HAVE_GETITIMER
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
105 static PyObject *ItimerError;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
106
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
107 /* auxiliary functions for setitimer/getitimer */
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
108 static void
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
109 timeval_from_double(double d, struct timeval *tv)
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
110 {
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
111 tv->tv_sec = floor(d);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
112 tv->tv_usec = fmod(d, 1.0) * 1000000.0;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
113 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
114
49387
86893a397dd0 Merged revisions 66748 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 48848
diff changeset
115 Py_LOCAL_INLINE(double)
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
116 double_from_timeval(struct timeval *tv)
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
117 {
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
118 return tv->tv_sec + (double)(tv->tv_usec / 1000000.0);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
119 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
120
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
121 static PyObject *
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
122 itimer_retval(struct itimerval *iv)
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
123 {
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
124 PyObject *r, *v;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
125
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
126 r = PyTuple_New(2);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
127 if (r == NULL)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
128 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
129
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
130 if(!(v = PyFloat_FromDouble(double_from_timeval(&iv->it_value)))) {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
131 Py_DECREF(r);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
132 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
133 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
134
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
135 PyTuple_SET_ITEM(r, 0, v);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
136
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
137 if(!(v = PyFloat_FromDouble(double_from_timeval(&iv->it_interval)))) {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
138 Py_DECREF(r);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
139 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
140 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
141
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
142 PyTuple_SET_ITEM(r, 1, v);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
143
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
144 return r;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
145 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
146 #endif
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
147
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
148 static PyObject *
13500
d9cc620ff186 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13447
diff changeset
149 signal_default_int_handler(PyObject *self, PyObject *args)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
151 PyErr_SetNone(PyExc_KeyboardInterrupt);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
152 return NULL;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 }
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
154
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
155 PyDoc_STRVAR(default_int_handler_doc,
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
156 "default_int_handler(...)\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
157 \n\
32361
55ba51bef0a8 silly typo
Michael W. Hudson <mwh@python.net>
parents: 30032
diff changeset
158 The default handler for SIGINT installed by Python.\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
159 It raises KeyboardInterrupt.");
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
160
13664
ee10834d67a3 Further ANSIfication of functionpointers and declarations. Also, make sure
Thomas Wouters <thomas@python.org>
parents: 13651
diff changeset
161
ee10834d67a3 Further ANSIfication of functionpointers and declarations. Also, make sure
Thomas Wouters <thomas@python.org>
parents: 13651
diff changeset
162 static int
ee10834d67a3 Further ANSIfication of functionpointers and declarations. Also, make sure
Thomas Wouters <thomas@python.org>
parents: 13651
diff changeset
163 checksignals_witharg(void * unused)
ee10834d67a3 Further ANSIfication of functionpointers and declarations. Also, make sure
Thomas Wouters <thomas@python.org>
parents: 13651
diff changeset
164 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
165 return PyErr_CheckSignals();
13664
ee10834d67a3 Further ANSIfication of functionpointers and declarations. Also, make sure
Thomas Wouters <thomas@python.org>
parents: 13651
diff changeset
166 }
ee10834d67a3 Further ANSIfication of functionpointers and declarations. Also, make sure
Thomas Wouters <thomas@python.org>
parents: 13651
diff changeset
167
13676
5423b132bc97 Removed all instances of RETSIGTYPE from the source code: signal
Tim Peters <tim.peters@gmail.com>
parents: 13673
diff changeset
168 static void
69423
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
169 trip_signal(int sig_num)
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
170 {
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
171 Handlers[sig_num].tripped = 1;
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
172 if (is_tripped)
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
173 return;
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
174 /* Set is_tripped after setting .tripped, as it gets
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
175 cleared in PyErr_CheckSignals() before .tripped. */
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
176 is_tripped = 1;
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
177 Py_AddPendingCall(checksignals_witharg, NULL);
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
178 if (wakeup_fd != -1)
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
179 write(wakeup_fd, "\0", 1);
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
180 }
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
181
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
182 static void
13500
d9cc620ff186 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13447
diff changeset
183 signal_handler(int sig_num)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 {
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
185 int save_errno = errno;
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
186
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
187 #if defined(WITH_THREAD) && defined(WITH_PTH)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
188 if (PyThread_get_thread_ident() != main_thread) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
189 pth_raise(*(pth_t *) main_thread, sig_num);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
190 }
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
191 else
14674
756c8c6535fe Make better use of GNU Pth -- patch by Andy Dustman.
Guido van Rossum <guido@python.org>
parents: 14638
diff changeset
192 #endif
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
193 {
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
194 #ifdef WITH_THREAD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
195 /* See NOTES section above */
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
196 if (getpid() == main_pid)
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
197 #endif
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
198 {
69423
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
199 trip_signal(sig_num);
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
200 }
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
201
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
202 #ifndef HAVE_SIGACTION
1888
be956b1efb97 * various modules: #include "Python.h" and remove most remporary
Guido van Rossum <guido@python.org>
parents: 1867
diff changeset
203 #ifdef SIGCHLD
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
204 /* To avoid infinite recursion, this signal remains
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
205 reset until explicit re-instated.
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
206 Don't clear the 'func' field as it is our pointer
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
207 to the Python handler... */
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
208 if (sig_num != SIGCHLD)
1888
be956b1efb97 * various modules: #include "Python.h" and remove most remporary
Guido van Rossum <guido@python.org>
parents: 1867
diff changeset
209 #endif
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
210 /* If the handler was not set up with sigaction, reinstall it. See
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
211 * Python/pythonrun.c for the implementation of PyOS_setsig which
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
212 * makes this true. See also issue8354. */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
213 PyOS_setsig(sig_num, signal_handler);
61452
677511edf05c Merged revisions 81016 via svnmerge from
Jean-Paul Calderone <exarkun@divmod.com>
parents: 55913
diff changeset
214 #endif
65985
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
215 }
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
216
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
217 /* Issue #10311: asynchronously executing signal handlers should not
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
218 mutate errno under the feet of unsuspecting C code. */
73ca6dfb22aa Merged revisions 86214 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 65040
diff changeset
219 errno = save_errno;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 }
2521
e7d480cf16ba added PyErr_SetInterrupt(); NT ifdefs
Guido van Rossum <guido@python.org>
parents: 2211
diff changeset
221
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
222
6142
144db635b49d Added configuration tests for presence of alarm(), pause(), and getpwent()
Guido van Rossum <guido@python.org>
parents: 5923
diff changeset
223 #ifdef HAVE_ALARM
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
224 static PyObject *
13500
d9cc620ff186 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13447
diff changeset
225 signal_alarm(PyObject *self, PyObject *args)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1678
diff changeset
226 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
227 int t;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
228 if (!PyArg_ParseTuple(args, "i:alarm", &t))
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
229 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
230 /* alarm() returns the number of seconds remaining */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
231 return PyLong_FromLong((long)alarm(t));
1817
20e1d296fdcc * Modules/signalmodule.c: added pause().
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
232 }
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
233
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
234 PyDoc_STRVAR(alarm_doc,
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
235 "alarm(seconds)\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
236 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
237 Arrange for SIGALRM to arrive after the given number of seconds.");
2521
e7d480cf16ba added PyErr_SetInterrupt(); NT ifdefs
Guido van Rossum <guido@python.org>
parents: 2211
diff changeset
238 #endif
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1678
diff changeset
239
6142
144db635b49d Added configuration tests for presence of alarm(), pause(), and getpwent()
Guido van Rossum <guido@python.org>
parents: 5923
diff changeset
240 #ifdef HAVE_PAUSE
2123
fd5ab7e828fc cosmetic changes so these modules will work with the strict new naming scheme
Guido van Rossum <guido@python.org>
parents: 2076
diff changeset
241 static PyObject *
22561
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 22114
diff changeset
242 signal_pause(PyObject *self)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
244 Py_BEGIN_ALLOW_THREADS
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
245 (void)pause();
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
246 Py_END_ALLOW_THREADS
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
247 /* make sure that any exceptions that got raised are propagated
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
248 * back into Python
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
249 */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
250 if (PyErr_CheckSignals())
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
251 return NULL;
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
252
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
253 Py_INCREF(Py_None);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
254 return Py_None;
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
255 }
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
256 PyDoc_STRVAR(pause_doc,
8696
f7b4db0c5b08 (pause_doc): Sun CC complains about newline in string literal
Barry Warsaw <barry@python.org>
parents: 8571
diff changeset
257 "pause()\n\
f7b4db0c5b08 (pause_doc): Sun CC complains about newline in string literal
Barry Warsaw <barry@python.org>
parents: 8571
diff changeset
258 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
259 Wait until a signal arrives.");
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
260
2521
e7d480cf16ba added PyErr_SetInterrupt(); NT ifdefs
Guido van Rossum <guido@python.org>
parents: 2211
diff changeset
261 #endif
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
262
14638
2e170c2f61e1 Use typedef PyOS_sighandler_t and APIs PyOS_getsig() and
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
263
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
264 static PyObject *
13500
d9cc620ff186 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13447
diff changeset
265 signal_signal(PyObject *self, PyObject *args)
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
266 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
267 PyObject *obj;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
268 int sig_num;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
269 PyObject *old_handler;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
270 void (*func)(int);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
271 if (!PyArg_ParseTuple(args, "iO:signal", &sig_num, &obj))
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
272 return NULL;
63777
d14e1e7248ba Merged revisions 83763 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 61467
diff changeset
273 #ifdef MS_WINDOWS
d14e1e7248ba Merged revisions 83763 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 61467
diff changeset
274 /* Validate that sig_num is one of the allowable signals */
64491
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
275 switch (sig_num) {
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
276 case SIGABRT: break;
65040
6f133e87a4f8 Merged revisions 85140 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 64491
diff changeset
277 #ifdef SIGBREAK
6f133e87a4f8 Merged revisions 85140 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 64491
diff changeset
278 /* Issue #10003: SIGBREAK is not documented as permitted, but works
6f133e87a4f8 Merged revisions 85140 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 64491
diff changeset
279 and corresponds to CTRL_BREAK_EVENT. */
6f133e87a4f8 Merged revisions 85140 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 64491
diff changeset
280 case SIGBREAK: break;
6f133e87a4f8 Merged revisions 85140 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 64491
diff changeset
281 #endif
64491
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
282 case SIGFPE: break;
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
283 case SIGILL: break;
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
284 case SIGINT: break;
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
285 case SIGSEGV: break;
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
286 case SIGTERM: break;
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
287 default:
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
288 PyErr_SetString(PyExc_ValueError, "invalid signal value");
047a9d7ca241 Merged revisions 84556 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 63779
diff changeset
289 return NULL;
63777
d14e1e7248ba Merged revisions 83763 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 61467
diff changeset
290 }
d14e1e7248ba Merged revisions 83763 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 61467
diff changeset
291 #endif
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
292 #ifdef WITH_THREAD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
293 if (PyThread_get_thread_ident() != main_thread) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
294 PyErr_SetString(PyExc_ValueError,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
295 "signal only works in main thread");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
296 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
297 }
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
298 #endif
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
299 if (sig_num < 1 || sig_num >= NSIG) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
300 PyErr_SetString(PyExc_ValueError,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
301 "signal number out of range");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
302 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
303 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
304 if (obj == IgnoreHandler)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
305 func = SIG_IGN;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
306 else if (obj == DefaultHandler)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
307 func = SIG_DFL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
308 else if (!PyCallable_Check(obj)) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
309 PyErr_SetString(PyExc_TypeError,
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
310 "signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object");
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
311 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
312 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
313 else
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
314 func = signal_handler;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
315 if (PyOS_setsig(sig_num, func) == SIG_ERR) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
316 PyErr_SetFromErrno(PyExc_RuntimeError);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
317 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
318 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
319 old_handler = Handlers[sig_num].func;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
320 Handlers[sig_num].tripped = 0;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
321 Py_INCREF(obj);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
322 Handlers[sig_num].func = obj;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
323 return old_handler;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 }
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
325
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
326 PyDoc_STRVAR(signal_doc,
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
327 "signal(sig, action) -> action\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
328 \n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
329 Set the action for the given signal. The action can be SIG_DFL,\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
330 SIG_IGN, or a callable Python object. The previous action is\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
331 returned. See getsignal() for possible return values.\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
332 \n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
333 *** IMPORTANT NOTICE ***\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
334 A signal handler function is called with two arguments:\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
335 the first is the signal number, the second is the interrupted stack frame.");
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
336
14638
2e170c2f61e1 Use typedef PyOS_sighandler_t and APIs PyOS_getsig() and
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
337
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1817
diff changeset
338 static PyObject *
13500
d9cc620ff186 ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13447
diff changeset
339 signal_getsignal(PyObject *self, PyObject *args)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
341 int sig_num;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
342 PyObject *old_handler;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
343 if (!PyArg_ParseTuple(args, "i:getsignal", &sig_num))
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
344 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
345 if (sig_num < 1 || sig_num >= NSIG) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
346 PyErr_SetString(PyExc_ValueError,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
347 "signal number out of range");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
348 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
349 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
350 old_handler = Handlers[sig_num].func;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
351 Py_INCREF(old_handler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
352 return old_handler;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 }
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
354
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
355 PyDoc_STRVAR(getsignal_doc,
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
356 "getsignal(sig) -> action\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
357 \n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
358 Return the current action for the given signal. The return value can be:\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
359 SIG_IGN -- if the signal is being ignored\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
360 SIG_DFL -- if the default action for the signal is in effect\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
361 None -- if an unknown handler is in effect\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
362 anything else -- the callable Python object used as a handler");
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
363
45460
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
364 #ifdef HAVE_SIGINTERRUPT
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
365 PyDoc_STRVAR(siginterrupt_doc,
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
366 "siginterrupt(sig, flag) -> None\n\
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
367 change system call restart behaviour: if flag is False, system calls\n\
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
368 will be restarted when interrupted by signal sig, else system calls\n\
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
369 will be interrupted.");
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
370
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
371 static PyObject *
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
372 signal_siginterrupt(PyObject *self, PyObject *args)
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
373 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
374 int sig_num;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
375 int flag;
45460
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
376
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
377 if (!PyArg_ParseTuple(args, "ii:siginterrupt", &sig_num, &flag))
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
378 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
379 if (sig_num < 1 || sig_num >= NSIG) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
380 PyErr_SetString(PyExc_ValueError,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
381 "signal number out of range");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
382 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
383 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
384 if (siginterrupt(sig_num, flag)<0) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
385 PyErr_SetFromErrno(PyExc_RuntimeError);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
386 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
387 }
45460
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
388
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
389 Py_INCREF(Py_None);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
390 return Py_None;
45460
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
391 }
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
392
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
393 #endif
14638
2e170c2f61e1 Use typedef PyOS_sighandler_t and APIs PyOS_getsig() and
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
394
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
395 static PyObject *
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
396 signal_set_wakeup_fd(PyObject *self, PyObject *args)
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
397 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
398 struct stat buf;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
399 int fd, old_fd;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
400 if (!PyArg_ParseTuple(args, "i:set_wakeup_fd", &fd))
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
401 return NULL;
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
402 #ifdef WITH_THREAD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
403 if (PyThread_get_thread_ident() != main_thread) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
404 PyErr_SetString(PyExc_ValueError,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
405 "set_wakeup_fd only works in main thread");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
406 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
407 }
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
408 #endif
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
409 if (fd != -1 && fstat(fd, &buf) != 0) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
410 PyErr_SetString(PyExc_ValueError, "invalid fd");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
411 return NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
412 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
413 old_fd = wakeup_fd;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
414 wakeup_fd = fd;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
415 return PyLong_FromLong(old_fd);
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
416 }
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
417
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
418 PyDoc_STRVAR(set_wakeup_fd_doc,
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
419 "set_wakeup_fd(fd) -> fd\n\
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
420 \n\
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
421 Sets the fd to be written to (with '\\0') when a signal\n\
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
422 comes in. A library can use this to wakeup select or poll.\n\
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
423 The previous fd is returned.\n\
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
424 \n\
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
425 The fd must be non-blocking.");
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
426
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
427 /* C API for the same, without all the error checking */
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
428 int
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
429 PySignal_SetWakeupFd(int fd)
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
430 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
431 int old_fd = wakeup_fd;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
432 if (fd < 0)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
433 fd = -1;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
434 wakeup_fd = fd;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
435 return old_fd;
44373
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
436 }
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
437
2750d531fdc0 Merged revisions 59565-59594 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
438
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
439 #ifdef HAVE_SETITIMER
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
440 static PyObject *
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
441 signal_setitimer(PyObject *self, PyObject *args)
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
442 {
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
443 double first;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
444 double interval = 0;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
445 int which;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
446 struct itimerval new, old;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
447
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
448 if(!PyArg_ParseTuple(args, "id|d:setitimer", &which, &first, &interval))
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
449 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
450
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
451 timeval_from_double(first, &new.it_value);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
452 timeval_from_double(interval, &new.it_interval);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
453 /* Let OS check "which" value */
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
454 if (setitimer(which, &new, &old) != 0) {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
455 PyErr_SetFromErrno(ItimerError);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
456 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
457 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
458
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
459 return itimer_retval(&old);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
460 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
461
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
462 PyDoc_STRVAR(setitimer_doc,
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
463 "setitimer(which, seconds[, interval])\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
464 \n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
465 Sets given itimer (one of ITIMER_REAL, ITIMER_VIRTUAL\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
466 or ITIMER_PROF) to fire after value seconds and after\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
467 that every interval seconds.\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
468 The itimer can be cleared by setting seconds to zero.\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
469 \n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
470 Returns old values as a tuple: (delay, interval).");
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
471 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
472
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
473
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
474 #ifdef HAVE_GETITIMER
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
475 static PyObject *
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
476 signal_getitimer(PyObject *self, PyObject *args)
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
477 {
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
478 int which;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
479 struct itimerval old;
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
480
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
481 if (!PyArg_ParseTuple(args, "i:getitimer", &which))
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
482 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
483
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
484 if (getitimer(which, &old) != 0) {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
485 PyErr_SetFromErrno(ItimerError);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
486 return NULL;
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
487 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
488
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
489 return itimer_retval(&old);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
490 }
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
491
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
492 PyDoc_STRVAR(getitimer_doc,
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
493 "getitimer(which)\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
494 \n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
495 Returns current value of given itimer.");
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
496 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
497
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
498
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
499 /* List of functions defined in the module */
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
500 static PyMethodDef signal_methods[] = {
6142
144db635b49d Added configuration tests for presence of alarm(), pause(), and getpwent()
Guido van Rossum <guido@python.org>
parents: 5923
diff changeset
501 #ifdef HAVE_ALARM
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
502 {"alarm", signal_alarm, METH_VARARGS, alarm_doc},
2521
e7d480cf16ba added PyErr_SetInterrupt(); NT ifdefs
Guido van Rossum <guido@python.org>
parents: 2211
diff changeset
503 #endif
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
504 #ifdef HAVE_SETITIMER
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
505 {"setitimer", signal_setitimer, METH_VARARGS, setitimer_doc},
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
506 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
507 #ifdef HAVE_GETITIMER
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
508 {"getitimer", signal_getitimer, METH_VARARGS, getitimer_doc},
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
509 #endif
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
510 {"signal", signal_signal, METH_VARARGS, signal_doc},
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
511 {"getsignal", signal_getsignal, METH_VARARGS, getsignal_doc},
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
512 {"set_wakeup_fd", signal_set_wakeup_fd, METH_VARARGS, set_wakeup_fd_doc},
45460
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
513 #ifdef HAVE_SIGINTERRUPT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
514 {"siginterrupt", signal_siginterrupt, METH_VARARGS, siginterrupt_doc},
45460
58c3f3439670 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44373
diff changeset
515 #endif
6142
144db635b49d Added configuration tests for presence of alarm(), pause(), and getpwent()
Guido van Rossum <guido@python.org>
parents: 5923
diff changeset
516 #ifdef HAVE_PAUSE
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
517 {"pause", (PyCFunction)signal_pause,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
518 METH_NOARGS,pause_doc},
2521
e7d480cf16ba added PyErr_SetInterrupt(); NT ifdefs
Guido van Rossum <guido@python.org>
parents: 2211
diff changeset
519 #endif
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
520 {"default_int_handler", signal_default_int_handler,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
521 METH_VARARGS, default_int_handler_doc},
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
522 {NULL, NULL} /* sentinel */
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
523 };
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
524
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
525
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
526 PyDoc_STRVAR(module_doc,
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
527 "This module provides mechanisms to use signal handlers in Python.\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
528 \n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
529 Functions:\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
530 \n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
531 alarm() -- cause SIGALRM after a specified time [Unix only]\n\
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
532 setitimer() -- cause a signal (described below) after a specified\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
533 float time and the timer may restart then [Unix only]\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
534 getitimer() -- get current value of timer [Unix only]\n\
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
535 signal() -- set the action for a given signal\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
536 getsignal() -- get the signal action for a given signal\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
537 pause() -- wait until a signal arrives [Unix only]\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
538 default_int_handler() -- default SIGINT handler\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
539 \n\
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
540 signal constants:\n\
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
541 SIG_DFL -- used to refer to the system default handler\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
542 SIG_IGN -- used to ignore the signal\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
543 NSIG -- number of defined signals\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
544 SIGINT, SIGTERM, etc. -- signal numbers\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
545 \n\
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
546 itimer constants:\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
547 ITIMER_REAL -- decrements in real time, and delivers SIGALRM upon\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
548 expiration\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
549 ITIMER_VIRTUAL -- decrements only when the process is executing,\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
550 and delivers SIGVTALRM upon expiration\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
551 ITIMER_PROF -- decrements both when the process is executing and\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
552 when the system is executing on behalf of the process.\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
553 Coupled with ITIMER_VIRTUAL, this timer is usually\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
554 used to profile the time spent by the application\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
555 in user and kernel space. SIGPROF is delivered upon\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
556 expiration.\n\
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
557 \n\n\
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
558 *** IMPORTANT NOTICE ***\n\
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
559 A signal handler function is called with two arguments:\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23550
diff changeset
560 the first is the signal number, the second is the interrupted stack frame.");
8570
bd695de18ecf Added doc strings.
Guido van Rossum <guido@python.org>
parents: 8210
diff changeset
561
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
562 static struct PyModuleDef signalmodule = {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
563 PyModuleDef_HEAD_INIT,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
564 "signal",
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
565 module_doc,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
566 -1,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
567 signal_methods,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
568 NULL,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
569 NULL,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
570 NULL,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
571 NULL
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
572 };
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
573
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 24071
diff changeset
574 PyMODINIT_FUNC
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
575 PyInit_signal(void)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
576 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
577 PyObject *m, *d, *x;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
578 int i;
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
579
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
580 #ifdef WITH_THREAD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
581 main_thread = PyThread_get_thread_ident();
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
582 main_pid = getpid();
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
583 #endif
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
584
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
585 /* Create the module and add the functions */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
586 m = PyModule_Create(&signalmodule);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
587 if (m == NULL)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
588 return NULL;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
589
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
590 /* Add some symbolic constants to the module */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
591 d = PyModule_GetDict(m);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
592
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
593 x = DefaultHandler = PyLong_FromVoidPtr((void *)SIG_DFL);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
594 if (!x || PyDict_SetItemString(d, "SIG_DFL", x) < 0)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
595 goto finally;
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
596
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
597 x = IgnoreHandler = PyLong_FromVoidPtr((void *)SIG_IGN);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
598 if (!x || PyDict_SetItemString(d, "SIG_IGN", x) < 0)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
599 goto finally;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
600
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
601 x = PyLong_FromLong((long)NSIG);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
602 if (!x || PyDict_SetItemString(d, "NSIG", x) < 0)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
603 goto finally;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
604 Py_DECREF(x);
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
605
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
606 x = IntHandler = PyDict_GetItemString(d, "default_int_handler");
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
607 if (!x)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
608 goto finally;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
609 Py_INCREF(IntHandler);
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
610
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
611 Handlers[0].tripped = 0;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
612 for (i = 1; i < NSIG; i++) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
613 void (*t)(int);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
614 t = PyOS_getsig(i);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
615 Handlers[i].tripped = 0;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
616 if (t == SIG_DFL)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
617 Handlers[i].func = DefaultHandler;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
618 else if (t == SIG_IGN)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
619 Handlers[i].func = IgnoreHandler;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
620 else
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
621 Handlers[i].func = Py_None; /* None of our business */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
622 Py_INCREF(Handlers[i].func);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
623 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
624 if (Handlers[SIGINT].func == DefaultHandler) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
625 /* Install default int handler */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
626 Py_INCREF(IntHandler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
627 Py_DECREF(Handlers[SIGINT].func);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
628 Handlers[SIGINT].func = IntHandler;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
629 old_siginthandler = PyOS_setsig(SIGINT, signal_handler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
630 }
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
631
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
632 #ifdef SIGHUP
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
633 x = PyLong_FromLong(SIGHUP);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
634 PyDict_SetItemString(d, "SIGHUP", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
635 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
637 #ifdef SIGINT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
638 x = PyLong_FromLong(SIGINT);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
639 PyDict_SetItemString(d, "SIGINT", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
640 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
641 #endif
20207
e2da9a929aca SF patch [#466877] SIGBREAK is missing from signal module.
Tim Peters <tim.peters@gmail.com>
parents: 18754
diff changeset
642 #ifdef SIGBREAK
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
643 x = PyLong_FromLong(SIGBREAK);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
644 PyDict_SetItemString(d, "SIGBREAK", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
645 Py_XDECREF(x);
20207
e2da9a929aca SF patch [#466877] SIGBREAK is missing from signal module.
Tim Peters <tim.peters@gmail.com>
parents: 18754
diff changeset
646 #endif
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
647 #ifdef SIGQUIT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
648 x = PyLong_FromLong(SIGQUIT);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
649 PyDict_SetItemString(d, "SIGQUIT", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
650 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
651 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
652 #ifdef SIGILL
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
653 x = PyLong_FromLong(SIGILL);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
654 PyDict_SetItemString(d, "SIGILL", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
655 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
656 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
657 #ifdef SIGTRAP
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
658 x = PyLong_FromLong(SIGTRAP);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
659 PyDict_SetItemString(d, "SIGTRAP", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
660 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
661 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
662 #ifdef SIGIOT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
663 x = PyLong_FromLong(SIGIOT);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
664 PyDict_SetItemString(d, "SIGIOT", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
665 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
667 #ifdef SIGABRT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
668 x = PyLong_FromLong(SIGABRT);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
669 PyDict_SetItemString(d, "SIGABRT", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
670 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 #ifdef SIGEMT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
673 x = PyLong_FromLong(SIGEMT);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
674 PyDict_SetItemString(d, "SIGEMT", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
675 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
676 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 #ifdef SIGFPE
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
678 x = PyLong_FromLong(SIGFPE);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
679 PyDict_SetItemString(d, "SIGFPE", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
680 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
681 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
682 #ifdef SIGKILL
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
683 x = PyLong_FromLong(SIGKILL);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
684 PyDict_SetItemString(d, "SIGKILL", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
685 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
686 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
687 #ifdef SIGBUS
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
688 x = PyLong_FromLong(SIGBUS);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
689 PyDict_SetItemString(d, "SIGBUS", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
690 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
691 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
692 #ifdef SIGSEGV
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
693 x = PyLong_FromLong(SIGSEGV);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
694 PyDict_SetItemString(d, "SIGSEGV", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
695 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 #ifdef SIGSYS
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
698 x = PyLong_FromLong(SIGSYS);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
699 PyDict_SetItemString(d, "SIGSYS", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
700 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
701 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
702 #ifdef SIGPIPE
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
703 x = PyLong_FromLong(SIGPIPE);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
704 PyDict_SetItemString(d, "SIGPIPE", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
705 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
706 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 #ifdef SIGALRM
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
708 x = PyLong_FromLong(SIGALRM);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
709 PyDict_SetItemString(d, "SIGALRM", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
710 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 #ifdef SIGTERM
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
713 x = PyLong_FromLong(SIGTERM);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
714 PyDict_SetItemString(d, "SIGTERM", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
715 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
717 #ifdef SIGUSR1
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
718 x = PyLong_FromLong(SIGUSR1);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
719 PyDict_SetItemString(d, "SIGUSR1", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
720 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
721 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 #ifdef SIGUSR2
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
723 x = PyLong_FromLong(SIGUSR2);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
724 PyDict_SetItemString(d, "SIGUSR2", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
725 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
727 #ifdef SIGCLD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
728 x = PyLong_FromLong(SIGCLD);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
729 PyDict_SetItemString(d, "SIGCLD", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
730 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
731 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 #ifdef SIGCHLD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
733 x = PyLong_FromLong(SIGCHLD);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
734 PyDict_SetItemString(d, "SIGCHLD", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
735 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
736 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
737 #ifdef SIGPWR
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
738 x = PyLong_FromLong(SIGPWR);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
739 PyDict_SetItemString(d, "SIGPWR", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
740 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
741 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
742 #ifdef SIGIO
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
743 x = PyLong_FromLong(SIGIO);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
744 PyDict_SetItemString(d, "SIGIO", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
745 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
747 #ifdef SIGURG
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
748 x = PyLong_FromLong(SIGURG);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
749 PyDict_SetItemString(d, "SIGURG", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
750 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
751 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
752 #ifdef SIGWINCH
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
753 x = PyLong_FromLong(SIGWINCH);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
754 PyDict_SetItemString(d, "SIGWINCH", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
755 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 #ifdef SIGPOLL
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
758 x = PyLong_FromLong(SIGPOLL);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
759 PyDict_SetItemString(d, "SIGPOLL", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
760 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
761 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
762 #ifdef SIGSTOP
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
763 x = PyLong_FromLong(SIGSTOP);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
764 PyDict_SetItemString(d, "SIGSTOP", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
765 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
766 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
767 #ifdef SIGTSTP
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
768 x = PyLong_FromLong(SIGTSTP);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
769 PyDict_SetItemString(d, "SIGTSTP", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
770 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
771 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 #ifdef SIGCONT
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
773 x = PyLong_FromLong(SIGCONT);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
774 PyDict_SetItemString(d, "SIGCONT", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
775 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
776 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
777 #ifdef SIGTTIN
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
778 x = PyLong_FromLong(SIGTTIN);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
779 PyDict_SetItemString(d, "SIGTTIN", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
780 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
781 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
782 #ifdef SIGTTOU
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
783 x = PyLong_FromLong(SIGTTOU);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
784 PyDict_SetItemString(d, "SIGTTOU", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
785 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
786 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
787 #ifdef SIGVTALRM
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
788 x = PyLong_FromLong(SIGVTALRM);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
789 PyDict_SetItemString(d, "SIGVTALRM", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
790 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
791 #endif
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
792 #ifdef SIGPROF
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
793 x = PyLong_FromLong(SIGPROF);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
794 PyDict_SetItemString(d, "SIGPROF", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
795 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
796 #endif
4736
94ad56ef5073 initsignal(): Added SIGXCPU and SIGXFSZ. Left in the definitions for
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
797 #ifdef SIGXCPU
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
798 x = PyLong_FromLong(SIGXCPU);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
799 PyDict_SetItemString(d, "SIGXCPU", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
800 Py_XDECREF(x);
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
801 #endif
4736
94ad56ef5073 initsignal(): Added SIGXCPU and SIGXFSZ. Left in the definitions for
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
802 #ifdef SIGXFSZ
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
803 x = PyLong_FromLong(SIGXFSZ);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
804 PyDict_SetItemString(d, "SIGXFSZ", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
805 Py_XDECREF(x);
4736
94ad56ef5073 initsignal(): Added SIGXCPU and SIGXFSZ. Left in the definitions for
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
806 #endif
30032
677038873a22 Patch [ 776725 ] add SIGRTMIN, SIGRTMAX to signalmodule.c
Anthony Baxter <anthonybaxter@gmail.com>
parents: 28295
diff changeset
807 #ifdef SIGRTMIN
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
808 x = PyLong_FromLong(SIGRTMIN);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
809 PyDict_SetItemString(d, "SIGRTMIN", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
810 Py_XDECREF(x);
30032
677038873a22 Patch [ 776725 ] add SIGRTMIN, SIGRTMAX to signalmodule.c
Anthony Baxter <anthonybaxter@gmail.com>
parents: 28295
diff changeset
811 #endif
677038873a22 Patch [ 776725 ] add SIGRTMIN, SIGRTMAX to signalmodule.c
Anthony Baxter <anthonybaxter@gmail.com>
parents: 28295
diff changeset
812 #ifdef SIGRTMAX
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
813 x = PyLong_FromLong(SIGRTMAX);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
814 PyDict_SetItemString(d, "SIGRTMAX", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
815 Py_XDECREF(x);
30032
677038873a22 Patch [ 776725 ] add SIGRTMIN, SIGRTMAX to signalmodule.c
Anthony Baxter <anthonybaxter@gmail.com>
parents: 28295
diff changeset
816 #endif
21715
4c6c13aa8a99 Export SIGINFO. Fixes #502077.
Martin v. Löwis <martin@v.loewis.de>
parents: 21712
diff changeset
817 #ifdef SIGINFO
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
818 x = PyLong_FromLong(SIGINFO);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
819 PyDict_SetItemString(d, "SIGINFO", x);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
820 Py_XDECREF(x);
21715
4c6c13aa8a99 Export SIGINFO. Fixes #502077.
Martin v. Löwis <martin@v.loewis.de>
parents: 21712
diff changeset
821 #endif
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
822
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
823 #ifdef ITIMER_REAL
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
824 x = PyLong_FromLong(ITIMER_REAL);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
825 PyDict_SetItemString(d, "ITIMER_REAL", x);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
826 Py_DECREF(x);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
827 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
828 #ifdef ITIMER_VIRTUAL
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
829 x = PyLong_FromLong(ITIMER_VIRTUAL);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
830 PyDict_SetItemString(d, "ITIMER_VIRTUAL", x);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
831 Py_DECREF(x);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
832 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
833 #ifdef ITIMER_PROF
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
834 x = PyLong_FromLong(ITIMER_PROF);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
835 PyDict_SetItemString(d, "ITIMER_PROF", x);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
836 Py_DECREF(x);
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
837 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
838
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
839 #if defined (HAVE_SETITIMER) || defined (HAVE_GETITIMER)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
840 ItimerError = PyErr_NewException("signal.ItimerError",
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
841 PyExc_IOError, NULL);
48848
5c75a33ef5b2 Merged revisions 66006 via svnmerge from
Neal Norwitz <nnorwitz@gmail.com>
parents: 47665
diff changeset
842 if (ItimerError != NULL)
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
843 PyDict_SetItemString(d, "ItimerError", ItimerError);
46054
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
844 #endif
41ee9a400ad1 Merged revisions 61846-61847 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45460
diff changeset
845
60556
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
846 #ifdef CTRL_C_EVENT
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
847 x = PyLong_FromLong(CTRL_C_EVENT);
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
848 PyDict_SetItemString(d, "CTRL_C_EVENT", x);
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
849 Py_DECREF(x);
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
850 #endif
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
851
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
852 #ifdef CTRL_BREAK_EVENT
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
853 x = PyLong_FromLong(CTRL_BREAK_EVENT);
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
854 PyDict_SetItemString(d, "CTRL_BREAK_EVENT", x);
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
855 Py_DECREF(x);
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
856 #endif
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59872
diff changeset
857
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
858 if (PyErr_Occurred()) {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
859 Py_DECREF(m);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
860 m = NULL;
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
861 }
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
862
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
863 finally:
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 46056
diff changeset
864 return m;
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
865 }
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
866
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
867 static void
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
868 finisignal(void)
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
869 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
870 int i;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
871 PyObject *func;
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
872
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
873 PyOS_setsig(SIGINT, old_siginthandler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
874 old_siginthandler = SIG_DFL;
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
875
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
876 for (i = 1; i < NSIG; i++) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
877 func = Handlers[i].func;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
878 Handlers[i].tripped = 0;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
879 Handlers[i].func = NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
880 if (i != SIGINT && func != NULL && func != Py_None &&
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
881 func != DefaultHandler && func != IgnoreHandler)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
882 PyOS_setsig(i, SIG_DFL);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
883 Py_XDECREF(func);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
884 }
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
885
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
886 Py_XDECREF(IntHandler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
887 IntHandler = NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
888 Py_XDECREF(DefaultHandler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
889 DefaultHandler = NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
890 Py_XDECREF(IgnoreHandler);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
891 IgnoreHandler = NULL;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
892 }
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
893
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
894
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
895 /* Declared in pyerrors.h */
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
896 int
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
897 PyErr_CheckSignals(void)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
898 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
899 int i;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
900 PyObject *f;
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
901
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
902 if (!is_tripped)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
903 return 0;
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
904
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
905 #ifdef WITH_THREAD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
906 if (PyThread_get_thread_ident() != main_thread)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
907 return 0;
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
908 #endif
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
909
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
910 /*
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
911 * The is_tripped variable is meant to speed up the calls to
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
912 * PyErr_CheckSignals (both directly or via pending calls) when no
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
913 * signal has arrived. This variable is set to 1 when a signal arrives
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
914 * and it is set to 0 here, when we know some signals arrived. This way
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
915 * we can run the registered handlers with no signals blocked.
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
916 *
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
917 * NOTE: with this approach we can have a situation where is_tripped is
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
918 * 1 but we have no more signals to handle (Handlers[i].tripped
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
919 * is 0 for every signal i). This won't do us any harm (except
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
920 * we're gonna spent some cycles for nothing). This happens when
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
921 * we receive a signal i after we zero is_tripped and before we
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
922 * check Handlers[i].tripped.
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
923 */
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
924 is_tripped = 0;
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
925
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
926 if (!(f = (PyObject *)PyEval_GetFrame()))
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
927 f = Py_None;
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
928
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
929 for (i = 1; i < NSIG; i++) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
930 if (Handlers[i].tripped) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
931 PyObject *result = NULL;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
932 PyObject *arglist = Py_BuildValue("(iO)", i, f);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
933 Handlers[i].tripped = 0;
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
934
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
935 if (arglist) {
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
936 result = PyEval_CallObject(Handlers[i].func,
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
937 arglist);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
938 Py_DECREF(arglist);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
939 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
940 if (!result)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
941 return -1;
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
942
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
943 Py_DECREF(result);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
944 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
945 }
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44099
diff changeset
946
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
947 return 0;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
948 }
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
949
14638
2e170c2f61e1 Use typedef PyOS_sighandler_t and APIs PyOS_getsig() and
Guido van Rossum <guido@python.org>
parents: 14375
diff changeset
950
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
951 /* Replacements for intrcheck.c functionality
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
952 * Declared in pyerrors.h
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
953 */
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
954 void
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
955 PyErr_SetInterrupt(void)
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
956 {
69423
319f7af9ee5e Issue #11768: The signal handler of the signal module only calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65985
diff changeset
957 trip_signal(SIGINT);
4863
b1707bcdc265 Several changes:
Barry Warsaw <barry@python.org>
parents: 4736
diff changeset
958 }
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
959
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
960 void
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
961 PyOS_InitInterrupts(void)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
962 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
963 PyObject *m = PyInit_signal();
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
964 if (m) {
65418
fd5135cbd928 _PyImport_FixupExtension() and _PyImport_FindExtension() uses FS encoding
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65039
diff changeset
965 _PyImport_FixupBuiltin(m, "signal");
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
966 Py_DECREF(m);
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
967 }
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
968 }
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
969
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
970 void
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
971 PyOS_FiniInterrupts(void)
5923
3e158e69ac5d Add finialization routines; fixed some memory leaks related to this.
Guido van Rossum <guido@python.org>
parents: 5730
diff changeset
972 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
973 finisignal();
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
974 }
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
975
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
976 int
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
977 PyOS_InterruptOccurred(void)
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
978 {
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
979 if (Handlers[SIGINT].tripped) {
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
980 #ifdef WITH_THREAD
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
981 if (PyThread_get_thread_ident() != main_thread)
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
982 return 0;
1678
1f06f71904c2 * Modules/signalmodule.c: added thread compatibility (only main
Guido van Rossum <guido@python.org>
parents: 1658
diff changeset
983 #endif
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
984 Handlers[SIGINT].tripped = 0;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
985 return 1;
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
986 }
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
987 return 0;
1630
0202a72d994e New experimental modules -- signal and sybase
Guido van Rossum <guido@python.org>
parents:
diff changeset
988 }
6578
01ee5607bb35 This fix (across 4 files in 3 directories) solves a subtle problem with
Guido van Rossum <guido@python.org>
parents: 6546
diff changeset
989
01ee5607bb35 This fix (across 4 files in 3 directories) solves a subtle problem with
Guido van Rossum <guido@python.org>
parents: 6546
diff changeset
990 void
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13500
diff changeset
991 PyOS_AfterFork(void)
6578
01ee5607bb35 This fix (across 4 files in 3 directories) solves a subtle problem with
Guido van Rossum <guido@python.org>
parents: 6546
diff changeset
992 {
01ee5607bb35 This fix (across 4 files in 3 directories) solves a subtle problem with
Guido van Rossum <guido@python.org>
parents: 6546
diff changeset
993 #ifdef WITH_THREAD
74730
7b24dd587a7b Issue #13817: After fork(), reinit the ad-hoc TLS implementation earlier to fix
Charles-François Natali <neologix@free.fr>
parents: 70138
diff changeset
994 /* PyThread_ReInitTLS() must be called early, to make sure that the TLS API
7b24dd587a7b Issue #13817: After fork(), reinit the ad-hoc TLS implementation earlier to fix
Charles-François Natali <neologix@free.fr>
parents: 70138
diff changeset
995 * can be called safely. */
7b24dd587a7b Issue #13817: After fork(), reinit the ad-hoc TLS implementation earlier to fix
Charles-François Natali <neologix@free.fr>
parents: 70138
diff changeset
996 PyThread_ReInitTLS();
69637
7b7ad9a88451 Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_*
Antoine Pitrou <solipsis@pitrou.net>
parents: 69424
diff changeset
997 _PyGILState_Reinit();
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
998 PyEval_ReInitThreads();
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
999 main_thread = PyThread_get_thread_ident();
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
1000 main_pid = getpid();
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 61452
diff changeset
1001 _PyImport_ReInitLock();
6578
01ee5607bb35 This fix (across 4 files in 3 directories) solves a subtle problem with
Guido van Rossum <guido@python.org>
parents: 6546
diff changeset
1002 #endif
01ee5607bb35 This fix (across 4 files in 3 directories) solves a subtle problem with
Guido van Rossum <guido@python.org>
parents: 6546
diff changeset
1003 }