On Tue, 19 Jan 2021 01:53:03 GMT, David Holmes <dhol...@openjdk.org> 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