equal
deleted
inserted
replaced
2518 |
2518 |
2519 // Linux(POSIX) specific hand shaking semaphore. |
2519 // Linux(POSIX) specific hand shaking semaphore. |
2520 static Semaphore* sig_sem = NULL; |
2520 static Semaphore* sig_sem = NULL; |
2521 static PosixSemaphore sr_semaphore; |
2521 static PosixSemaphore sr_semaphore; |
2522 |
2522 |
2523 void os::signal_init_pd() { |
2523 static void jdk_misc_signal_init() { |
2524 // Initialize signal structures |
2524 // Initialize signal structures |
2525 ::memset((void*)pending_signals, 0, sizeof(pending_signals)); |
2525 ::memset((void*)pending_signals, 0, sizeof(pending_signals)); |
2526 |
2526 |
2527 // Initialize signal semaphore |
2527 // Initialize signal semaphore |
2528 sig_sem = new Semaphore(); |
2528 sig_sem = new Semaphore(); |
2531 void os::signal_notify(int sig) { |
2531 void os::signal_notify(int sig) { |
2532 if (sig_sem != NULL) { |
2532 if (sig_sem != NULL) { |
2533 Atomic::inc(&pending_signals[sig]); |
2533 Atomic::inc(&pending_signals[sig]); |
2534 sig_sem->signal(); |
2534 sig_sem->signal(); |
2535 } else { |
2535 } else { |
2536 // Signal thread is not created with ReduceSignalUsage and signal_init_pd |
2536 // Signal thread is not created with ReduceSignalUsage and jdk_misc_signal_init |
2537 // initialization isn't called. |
2537 // initialization isn't called. |
2538 assert(ReduceSignalUsage, "signal semaphore should be created"); |
2538 assert(ReduceSignalUsage, "signal semaphore should be created"); |
2539 } |
2539 } |
2540 } |
2540 } |
2541 |
2541 |
4442 extern "C" JNIEXPORT int JVM_handle_linux_signal(int signo, |
4442 extern "C" JNIEXPORT int JVM_handle_linux_signal(int signo, |
4443 siginfo_t* siginfo, |
4443 siginfo_t* siginfo, |
4444 void* ucontext, |
4444 void* ucontext, |
4445 int abort_if_unrecognized); |
4445 int abort_if_unrecognized); |
4446 |
4446 |
4447 void signalHandler(int sig, siginfo_t* info, void* uc) { |
4447 static void signalHandler(int sig, siginfo_t* info, void* uc) { |
4448 assert(info != NULL && uc != NULL, "it must be old kernel"); |
4448 assert(info != NULL && uc != NULL, "it must be old kernel"); |
4449 int orig_errno = errno; // Preserve errno value over signal handler. |
4449 int orig_errno = errno; // Preserve errno value over signal handler. |
4450 JVM_handle_linux_signal(sig, info, uc, true); |
4450 JVM_handle_linux_signal(sig, info, uc, true); |
4451 errno = orig_errno; |
4451 errno = orig_errno; |
4452 } |
4452 } |
4990 return JNI_ERR; |
4990 return JNI_ERR; |
4991 } |
4991 } |
4992 |
4992 |
4993 Linux::signal_sets_init(); |
4993 Linux::signal_sets_init(); |
4994 Linux::install_signal_handlers(); |
4994 Linux::install_signal_handlers(); |
|
4995 // Initialize data for jdk.internal.misc.Signal |
|
4996 if (!ReduceSignalUsage) { |
|
4997 jdk_misc_signal_init(); |
|
4998 } |
4995 |
4999 |
4996 // Check and sets minimum stack sizes against command line options |
5000 // Check and sets minimum stack sizes against command line options |
4997 if (Posix::set_minimum_stack_sizes() == JNI_ERR) { |
5001 if (Posix::set_minimum_stack_sizes() == JNI_ERR) { |
4998 return JNI_ERR; |
5002 return JNI_ERR; |
4999 } |
5003 } |