os::signal_notify(int sig)
-
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) void os::signal_notify(int sig) { Atomic::inc(&pending_signals[sig]); ::sem_post(&sig_sem); }
os::signal(int signal_number, void* handler)
-
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) void* os::signal(int signal_number, void* handler) { struct sigaction sigAct, oldSigAct; sigfillset(&(sigAct.sa_mask)); sigAct.sa_flags = SA_RESTART|SA_SIGINFO; sigAct.sa_handler = CAST_TO_FN_PTR(sa_handler_t, handler); if (sigaction(signal_number, &sigAct, &oldSigAct)) { // -1 means registration failed return (void *)-1; } return CAST_FROM_FN_PTR(void*, oldSigAct.sa_handler); }
os::signal_raise(int signal_number)
-
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) void os::signal_raise(int signal_number) { ::raise(signal_number); }
os::signal_wait()
-
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) int os::signal_wait() { return check_pending_signals(true); }
os::signal_lookup()
-
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) int os::signal_lookup() { return check_pending_signals(false); }
os::user_handler()
-
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) void* os::user_handler() { return CAST_FROM_FN_PTR(void*, UserHandler); }
os::terminate_signal_thread()
-
//Linux版(jdk7/hotspot/src/share/vm/runtime/os.cpp) void os::terminate_signal_thread() { if (!ReduceSignalUsage) signal_notify(sigexitnum_pd()); }