On Tue, 19 Jan 2021 01:53:03 GMT, David Holmes <[email protected]> wrote:
>> We are now confident that we have build-time and runtime support for
>> clock_gettime and CLOCK_MONOTONIC on all our OpenJDK supported POSIX
>> platforms - see bug report for some more details on different OS.
>> Consequently we can simplify a lot of the code in this area and move common
>> code to os_posix.
>>
>> As of glibc 2.17 the necessary functions are in glibc rather than librt, but
>> we (Oracle at least) aren't yet in position to set our minimum Linux version
>> to support that. We still have supported platforms at glibc 2.12. So to
>> address that we link librt at build time on Linux. This seems to work find
>> for older and more modern Linuxes and also works for the Apline Linux with
>> Musl variant.
>>
>> The changes are in layered commits:
>>
>> Step 1: Remove build time checks. SUPPORTS_CLOCK_MONOTONIC is assumed true
>> and removed.
>> Step 2: make supports_monotonic_clock always true and so remove checking in
>> OS code
>> Step 3: Replace gettimeofday by clock_gettime(CLOCK_REALTIME)
>> Step 4: Move shared time functions to os_posix.cpp
>> Step 5: Alway link librt on Linux so we don't rely on glibc > 2.17
>>
>> Testing: tiers 1-3 for functional testing
>> built and checked (-Xlog:os) on Linux with glibc 2.12 and 2.17,
>> macOS 10.13.6 and 10.15.7
>
> David Holmes has updated the pull request with a new target base due to a
> merge or a rebase. The incremental webrev excludes the unrelated changes
> brought in by the merge/rebase. The pull request contains eight additional
> commits since the last revision:
>
> - Merge branch 'master' into 8246112-mono
> - Restrict librt linking to JVM - per Magnus's request
> - Merge branch 'master' into 8246112-mono
> - Alway link librt on Linux so we don't rely on glibc > 2.12
> - Step 4: Move shared time functions to os_posix.cpp
> - Step 3: Replace gettimeofday by clock_gettime(CLOCK_REALTIME)
> - Step 2: make supports_monotonic_clock always true and so remove checking
> it (in OS code)
> - 8246112: Remove build-time and run-time checks for clock_gettime and
> CLOCK_MONOTONIC
>
> Step 1: Remove build time checks. SUPPORTS_CLOCK_MONOTONIC is assumed true
> and removed.
Changes requested by gziemski (Committer).
src/hotspot/os/bsd/os_bsd.inline.hpp line 2:
> 1: /*
> 2: * Copyright (c) 1999, 2030, Oracle and/or its affiliates. All rights
> reserved.
Year 2030 ?
src/hotspot/os/bsd/os_bsd.cpp line 828:
> 826: }
> 827:
> 828: void os::javaTimeNanos_info(jvmtiTimerInfo *info_ptr) {
How come we need `os::javaTimeNanos_info` here if there is already one in
`os_posix.cpp`?
src/hotspot/os/posix/os_posix.hpp line 95:
> 93: static void ucontext_set_pc(ucontext_t* ctx, address pc);
> 94:
> 95: static bool supports_monotonic_clock();
Why do we need this API at all now?
thread.cpp uses it here:
assert(!os::supports_monotonic_clock(),
"unexpected time moving backwards detected in
JavaThread::sleep()");
so we can just remove this usage?
src/hotspot/os/posix/os_posix.cpp line 1161:
> 1159:
> 1160: void os::Posix::init_2(void) {
> 1161: log_info(os)("Use of CLOCK_MONOTONIC is supported");
We are keeping this output to avoid breaking whomever might be looking for this
text?
-------------
PR: https://git.openjdk.java.net/jdk/pull/2090