RFR: 8295125: os::signal should be os specific

David Holmes dholmes at openjdk.org
Thu Oct 20 06:08:28 UTC 2022


This was intended as a significant cleanup RFE but it turned out things were a lot messier than initially envisaged, so the resultant cleanup is quite limited.

The OS API/namespace was simplified by removing three signal related functions that are not needed in shared code:
 - signal
 - user_handler
 - raise
The first two were reworked and placed into PosixSignals and os::win32.
There was no need for a specific XX::raise API as os::raise simply called ::raise.

On the Posix side we had the basic signal handler installation code in two places:

1. Inline in set_signal_handler and used by nearly all the VM signals
2. In os::signal which was used by three different "clients"
  - VM error handler for updating crash handler
  - VM for installing SIG_BREAK handler
  - JDK via JVM_RegisterSignal

This was refactored so that we have:

1. PosixSignals::install_sigaction_signal_handler
  - used by the VM only
    - set_signal_handler
    - VM error handler for updating crash handler
    - VM for installing SIG_BREAK handler

2. PosixSignals::install_generic_signal_handler
  - used by JDK via JVM_RegisterSignal

The sigaction handlers were all consistently defined as per the posix definition:
    void func(int signo, siginfo_t *info, void *context);
  

On the Windows side we just fixed the incorrect definition of UserHandler and made some consistency changes to use the right signal handler type where possible.

Thanks.

-------------

Commit messages:
 - Fix erroneous cast after merge
 - Merge branch 'master' into 8295125-os_signal
 - 8295125: os::signal should be os specific

Changes: https://git.openjdk.org/jdk/pull/10780/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10780&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8295125
  Stats: 165 lines in 9 files changed: 81 ins; 33 del; 51 mod
  Patch: https://git.openjdk.org/jdk/pull/10780.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10780/head:pull/10780

PR: https://git.openjdk.org/jdk/pull/10780


More information about the hotspot-runtime-dev mailing list