summaryrefslogtreecommitdiffstats
path: root/Modules/signalmodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-09-19 00:46:46 (GMT)
committerGuido van Rossum <guido@python.org>2000-09-19 00:46:46 (GMT)
commit9e8181b809c0dc40f86d66ce7e51db83aaeccd20 (patch)
tree905b001aa2fe3c15cc51668151974dfb05dd51d4 /Modules/signalmodule.c
parent0344424793599e005b7071dd0338f508ac0d5168 (diff)
downloadcpython-9e8181b809c0dc40f86d66ce7e51db83aaeccd20.zip
cpython-9e8181b809c0dc40f86d66ce7e51db83aaeccd20.tar.gz
cpython-9e8181b809c0dc40f86d66ce7e51db83aaeccd20.tar.bz2
Make better use of GNU Pth -- patch by Andy Dustman.
I can't test this, so I'm just checking it in with blind faith in Andy. I've tested that it doesn't broeak a non-Pth build on Linux. Changes include: - There's a --with-pth configure option. - Instead of _GNU_PTH, we test for HAVE_PTH. - Better signal handling. - (The config.h.in file is regenerated in a slightly different order.)
Diffstat (limited to 'Modules/signalmodule.c')
-rw-r--r--Modules/signalmodule.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 9c5a18f..b9f7963 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -62,6 +62,9 @@
handler ignores signals if getpid() isn't the same as in the main
thread. XXX This is a hack.
+ GNU pth is a user-space threading library, and as such, all threads
+ run within the same process. In this case, if the currently running
+ thread is not the main_thread, send the signal to the main_thread.
*/
#ifdef WITH_THREAD
@@ -109,6 +112,12 @@ static void
signal_handler(int sig_num)
{
#ifdef WITH_THREAD
+#ifdef WITH_PTH
+ if (PyThread_get_thread_ident() != main_thread) {
+ pth_raise(*(pth_t *) main_thread, sig_num);
+ return;
+ }
+#endif
/* See NOTES section above */
if (getpid() == main_pid) {
#endif