Mercurial > cpython-lru_cache-weakref
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 |
| 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 | 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 | 86 } Handlers[NSIG]; |
| 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 | 93 static PyObject *DefaultHandler; |
| 94 static PyObject *IgnoreHandler; | |
| 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 | 156 "default_int_handler(...)\n\ |
| 157 \n\ | |
| 32361 | 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 | 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 | 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 | 235 "alarm(seconds)\n\ |
| 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 | 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 | 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 | 327 "signal(sig, action) -> action\n\ |
| 328 \n\ | |
| 329 Set the action for the given signal. The action can be SIG_DFL,\n\ | |
| 330 SIG_IGN, or a callable Python object. The previous action is\n\ | |
| 331 returned. See getsignal() for possible return values.\n\ | |
| 332 \n\ | |
| 333 *** IMPORTANT NOTICE ***\n\ | |
| 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 | 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 | 356 "getsignal(sig) -> action\n\ |
| 357 \n\ | |
| 358 Return the current action for the given signal. The return value can be:\n\ | |
| 359 SIG_IGN -- if the signal is being ignored\n\ | |
| 360 SIG_DFL -- if the default action for the signal is in effect\n\ | |
| 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 | 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 | 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 | 527 "This module provides mechanisms to use signal handlers in Python.\n\ |
| 528 \n\ | |
| 529 Functions:\n\ | |
| 530 \n\ | |
| 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 | 535 signal() -- set the action for a given signal\n\ |
| 536 getsignal() -- get the signal action for a given signal\n\ | |
| 537 pause() -- wait until a signal arrives [Unix only]\n\ | |
| 538 default_int_handler() -- default SIGINT handler\n\ | |
| 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 | 541 SIG_DFL -- used to refer to the system default handler\n\ |
| 542 SIG_IGN -- used to ignore the signal\n\ | |
| 543 NSIG -- number of defined signals\n\ | |
| 544 SIGINT, SIGTERM, etc. -- signal numbers\n\ | |
| 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 | 558 *** IMPORTANT NOTICE ***\n\ |
| 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 | 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 | 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 | 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 | 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 | 862 |
| 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 | 894 |
| 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 | 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 | 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 | 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 | 951 /* Replacements for intrcheck.c functionality |
| 952 * Declared in pyerrors.h | |
| 953 */ | |
| 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 | 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 | 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 } |
