Skip to content

Commit 50a2c22

Browse files
author
Gerard Ziemski
committed
8253742: POSIX signal code cleanup
Reviewed-by: stuefe, dholmes
1 parent fa8dce4 commit 50a2c22

File tree

20 files changed

+155
-262
lines changed

20 files changed

+155
-262
lines changed

src/hotspot/os/aix/os_aix.cpp

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,25 +1440,6 @@ void os::pd_print_cpu_info(outputStream* st, char* buf, size_t buflen) {
14401440
// Nothing to do beyond of what os::print_cpu_info() does.
14411441
}
14421442

1443-
void os::print_signal_handlers(outputStream* st, char* buf, size_t buflen) {
1444-
st->print_cr("Signal Handlers:");
1445-
PosixSignals::print_signal_handler(st, SIGSEGV, buf, buflen);
1446-
PosixSignals::print_signal_handler(st, SIGBUS , buf, buflen);
1447-
PosixSignals::print_signal_handler(st, SIGFPE , buf, buflen);
1448-
PosixSignals::print_signal_handler(st, SIGPIPE, buf, buflen);
1449-
PosixSignals::print_signal_handler(st, SIGXFSZ, buf, buflen);
1450-
PosixSignals::print_signal_handler(st, SIGILL , buf, buflen);
1451-
PosixSignals::print_signal_handler(st, SR_signum, buf, buflen);
1452-
PosixSignals::print_signal_handler(st, SHUTDOWN1_SIGNAL, buf, buflen);
1453-
PosixSignals::print_signal_handler(st, SHUTDOWN2_SIGNAL , buf, buflen);
1454-
PosixSignals::print_signal_handler(st, SHUTDOWN3_SIGNAL , buf, buflen);
1455-
PosixSignals::print_signal_handler(st, BREAK_SIGNAL, buf, buflen);
1456-
PosixSignals::print_signal_handler(st, SIGTRAP, buf, buflen);
1457-
// We also want to know if someone else adds a SIGDANGER handler because
1458-
// that will interfere with OOM killling.
1459-
PosixSignals::print_signal_handler(st, SIGDANGER, buf, buflen);
1460-
}
1461-
14621443
static char saved_jvm_path[MAXPATHLEN] = {0};
14631444

14641445
// Find the full path to the current module, libjvm.so.
@@ -2518,19 +2499,10 @@ jint os::init_2(void) {
25182499
LoadedLibraries::print(tty);
25192500
}
25202501

2521-
// initialize suspend/resume support - must do this before signal_sets_init()
2522-
if (PosixSignals::SR_initialize() != 0) {
2523-
perror("SR_initialize failed");
2502+
if (PosixSignals::init() == JNI_ERR) {
25242503
return JNI_ERR;
25252504
}
25262505

2527-
PosixSignals::signal_sets_init();
2528-
PosixSignals::install_signal_handlers();
2529-
// Initialize data for jdk.internal.misc.Signal
2530-
if (!ReduceSignalUsage) {
2531-
PosixSignals::jdk_misc_signal_init();
2532-
}
2533-
25342506
// Check and sets minimum stack sizes against command line options
25352507
if (Posix::set_minimum_stack_sizes() == JNI_ERR) {
25362508
return JNI_ERR;
@@ -2600,14 +2572,6 @@ bool os::bind_to_processor(uint processor_id) {
26002572
return false;
26012573
}
26022574

2603-
void os::SuspendedThreadTask::internal_do_task() {
2604-
if (PosixSignals::do_suspend(_thread->osthread())) {
2605-
SuspendedThreadTaskContext context(_thread, _thread->osthread()->ucontext());
2606-
do_task(context);
2607-
PosixSignals::do_resume(_thread->osthread());
2608-
}
2609-
}
2610-
26112575
////////////////////////////////////////////////////////////////////////////////
26122576
// debug support
26132577

src/hotspot/os/aix/os_aix.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,8 @@ class Aix {
9292
return _page_size;
9393
}
9494

95-
static address ucontext_get_pc(const ucontext_t* uc);
9695
static intptr_t* ucontext_get_sp(const ucontext_t* uc);
9796
static intptr_t* ucontext_get_fp(const ucontext_t* uc);
98-
// Set PC into context. Needed for continuation after signal.
99-
static void ucontext_set_pc(ucontext_t* uc, address pc);
10097

10198
static bool get_frame_at_stack_banging_point(JavaThread* thread, ucontext_t* uc, frame* fr);
10299

src/hotspot/os/bsd/os_bsd.cpp

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,21 +1540,6 @@ void os::print_memory_info(outputStream* st) {
15401540
st->cr();
15411541
}
15421542

1543-
void os::print_signal_handlers(outputStream* st, char* buf, size_t buflen) {
1544-
st->print_cr("Signal Handlers:");
1545-
PosixSignals::print_signal_handler(st, SIGSEGV, buf, buflen);
1546-
PosixSignals::print_signal_handler(st, SIGBUS , buf, buflen);
1547-
PosixSignals::print_signal_handler(st, SIGFPE , buf, buflen);
1548-
PosixSignals::print_signal_handler(st, SIGPIPE, buf, buflen);
1549-
PosixSignals::print_signal_handler(st, SIGXFSZ, buf, buflen);
1550-
PosixSignals::print_signal_handler(st, SIGILL , buf, buflen);
1551-
PosixSignals::print_signal_handler(st, SR_signum, buf, buflen);
1552-
PosixSignals::print_signal_handler(st, SHUTDOWN1_SIGNAL, buf, buflen);
1553-
PosixSignals::print_signal_handler(st, SHUTDOWN2_SIGNAL , buf, buflen);
1554-
PosixSignals::print_signal_handler(st, SHUTDOWN3_SIGNAL , buf, buflen);
1555-
PosixSignals::print_signal_handler(st, BREAK_SIGNAL, buf, buflen);
1556-
}
1557-
15581543
static char saved_jvm_path[MAXPATHLEN] = {0};
15591544

15601545
// Find the full path to the current module, libjvm
@@ -2139,19 +2124,10 @@ jint os::init_2(void) {
21392124

21402125
os::Posix::init_2();
21412126

2142-
// initialize suspend/resume support - must do this before signal_sets_init()
2143-
if (PosixSignals::SR_initialize() != 0) {
2144-
perror("SR_initialize failed");
2127+
if (PosixSignals::init() == JNI_ERR) {
21452128
return JNI_ERR;
21462129
}
21472130

2148-
PosixSignals::signal_sets_init();
2149-
PosixSignals::install_signal_handlers();
2150-
// Initialize data for jdk.internal.misc.Signal
2151-
if (!ReduceSignalUsage) {
2152-
PosixSignals::jdk_misc_signal_init();
2153-
}
2154-
21552131
// Check and sets minimum stack sizes against command line options
21562132
if (Posix::set_minimum_stack_sizes() == JNI_ERR) {
21572133
return JNI_ERR;
@@ -2282,14 +2258,6 @@ bool os::bind_to_processor(uint processor_id) {
22822258
return false;
22832259
}
22842260

2285-
void os::SuspendedThreadTask::internal_do_task() {
2286-
if (PosixSignals::do_suspend(_thread->osthread())) {
2287-
SuspendedThreadTaskContext context(_thread, _thread->osthread()->ucontext());
2288-
do_task(context);
2289-
PosixSignals::do_resume(_thread->osthread());
2290-
}
2291-
}
2292-
22932261
////////////////////////////////////////////////////////////////////////////////
22942262
// debug support
22952263

src/hotspot/os/bsd/os_bsd.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ class Bsd {
6868
static int page_size(void) { return _page_size; }
6969
static void set_page_size(int val) { _page_size = val; }
7070

71-
static address ucontext_get_pc(const ucontext_t* uc);
72-
static void ucontext_set_pc(ucontext_t* uc, address pc);
7371
static intptr_t* ucontext_get_sp(const ucontext_t* uc);
7472
static intptr_t* ucontext_get_fp(const ucontext_t* uc);
7573

src/hotspot/os/linux/os_linux.cpp

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ void os::free_thread(OSThread* osthread) {
994994
sigset_t current;
995995
sigemptyset(&current);
996996
pthread_sigmask(SIG_SETMASK, NULL, &current);
997-
assert(!sigismember(&current, SR_signum), "SR signal should not be blocked!");
997+
assert(!sigismember(&current, PosixSignals::SR_signum), "SR signal should not be blocked!");
998998
#endif
999999

10001000
// Restore caller's signal mask
@@ -2620,24 +2620,6 @@ void os::get_summary_cpu_info(char* cpuinfo, size_t length) {
26202620
#endif
26212621
}
26222622

2623-
void os::print_signal_handlers(outputStream* st, char* buf, size_t buflen) {
2624-
st->print_cr("Signal Handlers:");
2625-
PosixSignals::print_signal_handler(st, SIGSEGV, buf, buflen);
2626-
PosixSignals::print_signal_handler(st, SIGBUS , buf, buflen);
2627-
PosixSignals::print_signal_handler(st, SIGFPE , buf, buflen);
2628-
PosixSignals::print_signal_handler(st, SIGPIPE, buf, buflen);
2629-
PosixSignals::print_signal_handler(st, SIGXFSZ, buf, buflen);
2630-
PosixSignals::print_signal_handler(st, SIGILL , buf, buflen);
2631-
PosixSignals::print_signal_handler(st, SR_signum, buf, buflen);
2632-
PosixSignals::print_signal_handler(st, SHUTDOWN1_SIGNAL, buf, buflen);
2633-
PosixSignals::print_signal_handler(st, SHUTDOWN2_SIGNAL , buf, buflen);
2634-
PosixSignals::print_signal_handler(st, SHUTDOWN3_SIGNAL , buf, buflen);
2635-
PosixSignals::print_signal_handler(st, BREAK_SIGNAL, buf, buflen);
2636-
#if defined(PPC64)
2637-
PosixSignals::print_signal_handler(st, SIGTRAP, buf, buflen);
2638-
#endif
2639-
}
2640-
26412623
static char saved_jvm_path[MAXPATHLEN] = {0};
26422624

26432625
// Find the full path to the current module, libjvm.so
@@ -4543,19 +4525,10 @@ jint os::init_2(void) {
45434525

45444526
Linux::fast_thread_clock_init();
45454527

4546-
// initialize suspend/resume support - must do this before signal_sets_init()
4547-
if (PosixSignals::SR_initialize() != 0) {
4548-
perror("SR_initialize failed");
4528+
if (PosixSignals::init() == JNI_ERR) {
45494529
return JNI_ERR;
45504530
}
45514531

4552-
PosixSignals::signal_sets_init();
4553-
PosixSignals::install_signal_handlers();
4554-
// Initialize data for jdk.internal.misc.Signal
4555-
if (!ReduceSignalUsage) {
4556-
PosixSignals::jdk_misc_signal_init();
4557-
}
4558-
45594532
if (AdjustStackSizeForTLS) {
45604533
get_minstack_init();
45614534
}
@@ -4808,16 +4781,6 @@ bool os::bind_to_processor(uint processor_id) {
48084781
return false;
48094782
}
48104783

4811-
///
4812-
4813-
void os::SuspendedThreadTask::internal_do_task() {
4814-
if (PosixSignals::do_suspend(_thread->osthread())) {
4815-
SuspendedThreadTaskContext context(_thread, _thread->osthread()->ucontext());
4816-
do_task(context);
4817-
PosixSignals::do_resume(_thread->osthread());
4818-
}
4819-
}
4820-
48214784
////////////////////////////////////////////////////////////////////////////////
48224785
// debug support
48234786

src/hotspot/os/linux/os_linux.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,6 @@ class Linux {
134134
static int page_size(void) { return _page_size; }
135135
static void set_page_size(int val) { _page_size = val; }
136136

137-
static address ucontext_get_pc(const ucontext_t* uc);
138-
static void ucontext_set_pc(ucontext_t* uc, address pc);
139137
static intptr_t* ucontext_get_sp(const ucontext_t* uc);
140138
static intptr_t* ucontext_get_fp(const ucontext_t* uc);
141139

src/hotspot/os/posix/os_posix.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ class Posix {
8888

8989
static void print_user_info(outputStream* st);
9090

91+
// Set PC into context. Needed for continuation after signal.
92+
static address ucontext_get_pc(const ucontext_t* ctx);
93+
static void ucontext_set_pc(ucontext_t* ctx, address pc);
94+
9195
#ifdef SUPPORTS_CLOCK_MONOTONIC
9296

9397
private:

0 commit comments

Comments
 (0)