@@ -64,7 +64,7 @@ static sigset_t check_signal_done;
6464static bool check_signals = true ;
6565
6666// This boolean allows users to forward their own non-matching signals
67- // to JVM_handle_posix_signal harmlessly.
67+ // to JVM_handle_bsd_signal/JVM_handle_linux_signal, harmlessly.
6868static bool signal_handlers_are_installed = false ;
6969
7070debug_only (static bool signal_sets_initialized = false );
@@ -432,9 +432,20 @@ bool PosixSignals::chained_handler(int sig, siginfo_t* siginfo, void* context) {
432432// Note that the VM will print warnings if it detects conflicting signal
433433// handlers, unless invoked with the option "-XX:+AllowUserSignalHandlers".
434434//
435- extern " C" JNIEXPORT int JVM_handle_posix_signal (int signo, siginfo_t * siginfo,
436- void * ucontext,
437- int abort_if_unrecognized);
435+
436+ #if defined(BSD)
437+ extern " C" JNIEXPORT int JVM_handle_bsd_signal (int signo, siginfo_t * siginfo,
438+ void * ucontext,
439+ int abort_if_unrecognized);
440+ #elif defined(AIX)
441+ extern " C" JNIEXPORT int JVM_handle_aix_signal (int signo, siginfo_t * siginfo,
442+ void * ucontext,
443+ int abort_if_unrecognized);
444+ #else
445+ extern " C" JNIEXPORT int JVM_handle_linux_signal (int signo, siginfo_t * siginfo,
446+ void * ucontext,
447+ int abort_if_unrecognized);
448+ #endif
438449
439450// Function to unblock all signals which are, according
440451// to POSIX, typical program error signals. If they happen while being blocked,
@@ -459,7 +470,13 @@ static void javaSignalHandler(int sig, siginfo_t* info, void* uc) {
459470 unblock_program_error_signals ();
460471
461472 int orig_errno = errno; // Preserve errno value over signal handler.
462- JVM_handle_posix_signal (sig, info, uc, true );
473+ #if defined(BSD)
474+ JVM_handle_bsd_signal (sig, info, uc, true );
475+ #elif defined(AIX)
476+ JVM_handle_aix_signal (sig, info, uc, true );
477+ #else
478+ JVM_handle_linux_signal (sig, info, uc, true );
479+ #endif
463480 errno = orig_errno;
464481}
465482
0 commit comments