Fixes PR86.
authorChristian Thalinger <twisti@complang.tuwien.ac.at>
Sat, 26 Jul 2008 15:39:10 +0000 (17:39 +0200)
committerChristian Thalinger <twisti@complang.tuwien.ac.at>
Sat, 26 Jul 2008 15:39:10 +0000 (17:39 +0200)
* src/threads/posix/thread-posix.cpp (signal.h): Removed.
(vm/signallocal.h): Added.
(threads_thread_interrupt): Removed __SIGRTMAX stuff from OpenJDK and
always use Signal_THREAD_INTERRUPT.
* src/vm/signal.c (signal_init): Use Signal_THREAD_INTERRUPT instead
of SIGHUP.
* src/vm/signallocal.h (Signal_THREAD_INTERRUPT): Added.

src/threads/posix/thread-posix.cpp
src/vm/signal.c
src/vm/signallocal.h

index 4479fae449a16c24601b8c9a9d6b7997b17d3b85..6f61657031d8d2fe21495b19bee358483adeb0c9 100644 (file)
@@ -32,7 +32,6 @@
 #include <assert.h>
 #include <sys/types.h>
 #include <unistd.h>
-#include <signal.h>
 #include <sys/time.h>
 #include <time.h>
 #include <errno.h>
@@ -78,6 +77,7 @@
 #include "vm/builtin.h"
 #include "vm/exceptions.hpp"
 #include "vm/global.h"
+#include "vm/signallocal.h"
 #include "vm/string.hpp"
 #include "vm/vm.hpp"
 
@@ -1547,12 +1547,6 @@ static void threads_calc_absolute_time(struct timespec *tm, s8 millis, s4 nanos)
 
 void threads_thread_interrupt(threadobject *t)
 {
-#if defined(__LINUX__) && defined(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK)
-       /* See openjdk/jdk/src/solaris/native/java/net/linux_close.c, "sigWakeup" */
-       int sig = (__SIGRTMAX - 2);
-#else
-       int sig = SIGHUP;
-#endif
        /* Signal the thread a "waitcond" and tell it that it has been
           interrupted. */
 
@@ -1562,7 +1556,7 @@ void threads_thread_interrupt(threadobject *t)
 
        /* Interrupt blocking system call using a signal. */
 
-       pthread_kill(t->tid, sig);
+       pthread_kill(t->tid, Signal_THREAD_INTERRUPT);
 
        t->waitcond->signal();
 
index 8e46c3be7709d58b02de11048c352988f594d990..9c03d4854cb5031be2347e973bfda69f122f63f1 100644 (file)
@@ -189,7 +189,7 @@ bool signal_init(void)
 #if defined(ENABLE_THREADS)
        /* SIGHUP handler for threads_thread_interrupt */
 
-       signal_register_signal(SIGHUP, (functionptr) signal_handler_sighup, 0);
+       signal_register_signal(Signal_THREAD_INTERRUPT, (functionptr) signal_handler_sighup, 0);
 #endif
 
 #if defined(ENABLE_THREADS) && defined(ENABLE_GC_CACAO)
index 644de4c95cd8bbafd3b387bd5363c23aa8c3b173..35a80d1051627011339a8515b26af35d657efb12 100644 (file)
@@ -37,6 +37,11 @@ extern "C" {
 #include "vm/global.h"
 
 
+// Signal defines.
+
+#define Signal_THREAD_INTERRUPT    SIGHUP
+
+
 /* function prototypes ********************************************************/
 
 bool  signal_init(void);