[all-commits] [llvm/llvm-project] 8bec89: [libc++][Apple] Use CLOCK_MONOTONIC_RAW instead of...

Louis Dionne via All-commits all-commits at lists.llvm.org
Wed Feb 12 07:43:56 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 8bec8927134f116eb11ddea9db78b1a6241884c9
      https://github.com/llvm/llvm-project/commit/8bec8927134f116eb11ddea9db78b1a6241884c9
  Author: Louis Dionne <ldionne at apple.com>
  Date:   2020-02-12 (Wed, 12 Feb 2020)

  Changed paths:
    M libcxx/src/chrono.cpp

  Log Message:
  -----------
  [libc++][Apple] Use CLOCK_MONOTONIC_RAW instead of CLOCK_UPTIME_RAW for steady_clock

Summary:
In D27429, we switched the Apple implementation of steady_clock::now()
from clock_gettime(CLOCK_MONOTONIC) to clock_gettime(CLOCK_UPTIME_RAW).
The purpose was to get nanosecond precision, and also to improve the
performance of the implementation.

However, it appears that CLOCK_UPTIME_RAW does not satisfy the requirements
of the Standard, since it is not strictly speaking monotonic. Indeed, the
clock does not increment while the system is asleep, which had been
mentioned in D27429 but somehow not addressed.

This patch switches to CLOCK_MONOTONIC_RAW, which is monotonic, increased
during sleep, and also has nanosecond precision.

https://llvm.org/PR44773

Reviewers: bruno, howard.hinnant, EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits, mclow.lists, EricWF

Tags: #libc

Differential Revision: https://reviews.llvm.org/D74341




More information about the All-commits mailing list