8141529-NSIG-hs-rt Udiff src/os/bsd/vm/os_bsd.cpp (original) (raw)

< prev index next >

Print this page

rev 9384 : 8141529: Fix handling of _JAVA_SR_SIGNUM


@@ -2829,12 +2829,16 @@ struct sigaction act; char *s; // Get signal number to use for suspend/resume if ((s = ::getenv("_JAVA_SR_SIGNUM")) != 0) { int sig = ::strtol(s, 0, 10);


@@ -2983,12 +2987,15 @@ // This boolean allows users to forward their own non-matching signals // to JVM_handle_bsd_signal, harmlessly. bool os::Bsd::signal_handlers_are_installed = false;

// For signal-chaining -struct sigaction os::Bsd::sigact[MAXSIGNUM]; -unsigned int os::Bsd::sigs = 0; +struct sigaction os::Bsd::sigact[NSIG]; +uint32_t os::Bsd::sigs = 0; +#if (32 < NSIG-1) +#error "Not all signals can be encoded in sigs. Adapt its type!" +#endif bool os::Bsd::libjsig_is_loaded = false; typedef struct sigaction *(*get_signal_t)(int); get_signal_t os::Bsd::get_signal_action = NULL;

struct sigaction* os::Bsd::get_chained_signal_action(int sig) {


@@ -3062,33 +3069,35 @@ } return chained; }

struct sigaction* os::Bsd::get_preinstalled_handler(int sig) {

void os::Bsd::save_preinstalled_handler(int sig, struct sigaction& oldAct) {

// for diagnostic -int os::Bsd::sigflags[MAXSIGNUM]; +int os::Bsd::sigflags[NSIG];

int os::Bsd::get_our_sigflags(int sig) {

void os::Bsd::set_our_sigflags(int sig, int flags) {

void os::Bsd::set_signal_handler(int sig, bool set_installed) { // Check for overwrite. struct sigaction oldAct;


@@ -3135,11 +3144,11 @@ sigAct.sa_flags |= SA_ONSTACK; } #endif

// Save flags, which are set by ours

< prev index next >