/* src/vm/signallocal.h - machine independent signal functions
- Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
- C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
- E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
- J. Wenninger, Institut f. Computersprachen - TU Wien
+ Copyright (C) 1996-2005, 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
This file is part of CACAO.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: signallocal.h 8283 2007-08-09 15:10:05Z twisti $
-
*/
#include "config.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include <signal.h>
#include "vm/global.h"
+// Signal defines.
+
+#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 ********************************************************/
bool signal_init(void);
-void signal_register_signal(int signum, void *handler, int flags);
-void *signal_handle(void *xpc, int type, intptr_t val);
+void signal_register_signal(int signum, functionptr handler, int flags);
+
+void signal_thread_handler(int sig);
bool signal_start_thread(void);
/* machine dependent signal handler */
void md_signal_handler_sigfpe(int sig, siginfo_t *siginfo, void *_p);
#endif
-#if defined(__ARM__) || defined(__S390__)
+#if defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__S390__) || defined(__X86_64__) || defined(__M68K__)
/* XXX use better defines for that (in arch.h) */
void md_signal_handler_sigill(int sig, siginfo_t *siginfo, void *_p);
#endif
void md_signal_handler_sigtrap(int sig, siginfo_t *siginfo, void *_p);
#endif
+void md_signal_handler_sigusr1(int sig, siginfo_t *siginfo, void *_p);
+
void md_signal_handler_sigusr2(int sig, siginfo_t *siginfo, void *_p);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _CACAO_SIGNAL_H */