* src/vm/signallocal.h (Signal_THREAD_INTERRUPT): Renamed to
authorChristian Thalinger <twisti@complang.tuwien.ac.at>
Wed, 6 Aug 2008 13:34:13 +0000 (15:34 +0200)
committerChristian Thalinger <twisti@complang.tuwien.ac.at>
Wed, 6 Aug 2008 13:34:13 +0000 (15:34 +0200)
Signal_INTERRUPT_SYSTEM_CALL and defined to (__SIGRTMAX - 2) for
Linux.  We will ses what OpenJDK wants on other OSes, like BSD.
* src/vm/signal.c (signal_init): Use new define name.
(signal_thread_handler) [!WITH_JAVA_RUNTIME_LIBRARY_OPENJDK]: Added
default case and abort.
* src/threads/posix/thread-posix.cpp (threads_thread_interrupt): Use
new define name.

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

index 31c22840b18c0c751798e25cfdb830baa74add68..cd1b19a26f7e752139cc075e556258c9376823ff 100644 (file)
@@ -1543,7 +1543,7 @@ void threads_thread_interrupt(threadobject *t)
 
        /* Interrupt blocking system call using a signal. */
 
-       pthread_kill(t->tid, Signal_THREAD_INTERRUPT);
+       pthread_kill(t->tid, Signal_INTERRUPT_SYSTEM_CALL);
 
        t->waitcond->signal();
 
index 0efc5c6138cdfe17e70170b976d24d472d6e411e..fe2ded0407914f833090cd2b6e4695b6db82118e 100644 (file)
@@ -191,7 +191,7 @@ bool signal_init(void)
 #if defined(ENABLE_THREADS)
        /* SIGHUP handler for threads_thread_interrupt */
 
-       signal_register_signal(Signal_THREAD_INTERRUPT, (functionptr) signal_handler_sighup, 0);
+       signal_register_signal(Signal_INTERRUPT_SYSTEM_CALL, (functionptr) signal_handler_sighup, 0);
 #endif
 
 #if defined(ENABLE_THREADS) && defined(ENABLE_GC_CACAO)
@@ -339,6 +339,9 @@ void signal_thread_handler(int sig)
                }
                break;
        }
+#else
+       default:
+               vm_abort("signal_thread_handler: Unknown signal %d", sig);
 #endif
        }
 }
index 35a80d1051627011339a8515b26af35d657efb12..799e4bfcb1da6243c18c24d4c891e3e8325c2426 100644 (file)
@@ -39,7 +39,13 @@ extern "C" {
 
 // Signal defines.
 
-#define Signal_THREAD_INTERRUPT    SIGHUP
+#if defined(__LINUX__)
+// See openjdk/jdk/src/solaris/native/java/net/linux_close.c (sigWakeup)
+// See openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c (INTERRUPT_SIGNAL)
+# define Signal_INTERRUPT_SYSTEM_CALL    (__SIGRTMAX - 2)
+#else
+# define Signal_INTERRUPT_SYSTEM_CALL    SIGHUP
+#endif
 
 
 /* function prototypes ********************************************************/