< prev index next >

src/os/aix/vm/os_aix.cpp

Print this page




1606 
1607 void os::print_jni_name_suffix_on(outputStream* st, int args_size) {
1608   // no suffix required
1609 }
1610 
1611 ////////////////////////////////////////////////////////////////////////////////
1612 // sun.misc.Signal support
1613 
1614 static volatile jint sigint_count = 0;
1615 
1616 static void
1617 UserHandler(int sig, void *siginfo, void *context) {
1618   // 4511530 - sem_post is serialized and handled by the manager thread. When
1619   // the program is interrupted by Ctrl-C, SIGINT is sent to every thread. We
1620   // don't want to flood the manager thread with sem_post requests.
1621   if (sig == SIGINT && Atomic::add(1, &sigint_count) > 1)
1622     return;
1623 
1624   // Ctrl-C is pressed during error reporting, likely because the error
1625   // handler fails to abort. Let VM die immediately.
1626   if (sig == SIGINT && is_error_reported()) {
1627     os::die();
1628   }
1629 
1630   os::signal_notify(sig);
1631 }
1632 
1633 void* os::user_handler() {
1634   return CAST_FROM_FN_PTR(void*, UserHandler);
1635 }
1636 
1637 extern "C" {
1638   typedef void (*sa_handler_t)(int);
1639   typedef void (*sa_sigaction_t)(int, siginfo_t *, void *);
1640 }
1641 
1642 void* os::signal(int signal_number, void* handler) {
1643   struct sigaction sigAct, oldSigAct;
1644 
1645   sigfillset(&(sigAct.sa_mask));
1646 




1606 
1607 void os::print_jni_name_suffix_on(outputStream* st, int args_size) {
1608   // no suffix required
1609 }
1610 
1611 ////////////////////////////////////////////////////////////////////////////////
1612 // sun.misc.Signal support
1613 
1614 static volatile jint sigint_count = 0;
1615 
1616 static void
1617 UserHandler(int sig, void *siginfo, void *context) {
1618   // 4511530 - sem_post is serialized and handled by the manager thread. When
1619   // the program is interrupted by Ctrl-C, SIGINT is sent to every thread. We
1620   // don't want to flood the manager thread with sem_post requests.
1621   if (sig == SIGINT && Atomic::add(1, &sigint_count) > 1)
1622     return;
1623 
1624   // Ctrl-C is pressed during error reporting, likely because the error
1625   // handler fails to abort. Let VM die immediately.
1626   if (sig == SIGINT && VMError::is_error_reported()) {
1627     os::die();
1628   }
1629 
1630   os::signal_notify(sig);
1631 }
1632 
1633 void* os::user_handler() {
1634   return CAST_FROM_FN_PTR(void*, UserHandler);
1635 }
1636 
1637 extern "C" {
1638   typedef void (*sa_handler_t)(int);
1639   typedef void (*sa_sigaction_t)(int, siginfo_t *, void *);
1640 }
1641 
1642 void* os::signal(int signal_number, void* handler) {
1643   struct sigaction sigAct, oldSigAct;
1644 
1645   sigfillset(&(sigAct.sa_mask));
1646 


< prev index next >