< prev index next >
src/hotspot/os/posix/os_posix.cpp
Print this page
@@ -1642,10 +1642,28 @@
if ((status = pthread_mutexattr_settype(_mutexAttr, PTHREAD_MUTEX_NORMAL)) != 0) {
fatal("pthread_mutexattr_settype: %s", os::strerror(status));
}
}
+#ifndef SOLARIS
+sigset_t sigs;
+struct sigaction sigact[NSIG];
+
+struct sigaction* os::Posix::get_preinstalled_handler(int sig) {
+ if (sigismember(&sigs, sig)) {
+ return &sigact[sig];
+ }
+ return NULL;
+}
+
+void os::Posix::save_preinstalled_handler(int sig, struct sigaction& oldAct) {
+ assert(sig > 0 && sig < NSIG, "vm signal out of expected range");
+ sigact[sig] = oldAct;
+ sigaddset(&sigs, sig);
+}
+#endif
+
// Not all POSIX types and API's are available on all notionally "posix"
// platforms. If we have build-time support then we will check for actual
// runtime support via dlopen/dlsym lookup. This allows for running on an
// older OS version compared to the build platform. But if there is no
// build time support then there cannot be any runtime support as we do not
@@ -1752,10 +1770,11 @@
(_clock_gettime != NULL ? "" : " not"));
log_info(os)("Use of pthread_condattr_setclock is%s supported",
(_pthread_condattr_setclock != NULL ? "" : " not"));
log_info(os)("Relative timed-wait using pthread_cond_timedwait is associated with %s",
_use_clock_monotonic_condattr ? "CLOCK_MONOTONIC" : "the default clock");
+ sigemptyset(&sigs);
#endif // !SOLARIS
}
#else // !SUPPORTS_CLOCK_MONOTONIC
@@ -1766,10 +1785,11 @@
void os::Posix::init_2(void) {
#ifndef SOLARIS
log_info(os)("Use of CLOCK_MONOTONIC is not supported");
log_info(os)("Use of pthread_condattr_setclock is not supported");
log_info(os)("Relative timed-wait using pthread_cond_timedwait is associated with the default clock");
+ sigemptyset(&sigs);
#endif // !SOLARIS
}
#endif // SUPPORTS_CLOCK_MONOTONIC
< prev index next >