diff options
author | Guido van Rossum <guido@python.org> | 2000-09-19 00:46:46 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-09-19 00:46:46 (GMT) |
commit | 9e8181b809c0dc40f86d66ce7e51db83aaeccd20 (patch) | |
tree | 905b001aa2fe3c15cc51668151974dfb05dd51d4 /Modules/signalmodule.c | |
parent | 0344424793599e005b7071dd0338f508ac0d5168 (diff) | |
download | cpython-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.c | 9 |
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 |