1. 17 Feb, 2023 2 commits
    • Update latest Linux container to unbreak Kokoro · a0f9b465
      PiperOrigin-RevId: 510518832
      Change-Id: I086c8f2e34312e2b0384b3c67b9c04814d41ddf0
      Derek Mauro committed
    • Synchronization: Add support for true relative timeouts using · ed37a45a
      monotonic clocks on Linux when the implementation uses futexes
      
      After this change, when synchronization methods that wait are passed
      an absl::Duration to limit the wait time, these methods will wait for
      that interval, even if the system clock is changed (subject to any
      limitations with how CLOCK_MONOTONIC keeps track of time). In other
      words, an observer measuring the time with a stop watch will now see
      the correct interval, even if the system clock is changed. Previously,
      the duration was added to the current time, and methods would wait
      until that time was reached on the possibly changed realtime system
      clock.
      
      The behavior of the synchronization methods that take an absl::Time is
      unchanged.  These methods always wait until the absolute point in time
      is reached and respect changes to the system clock. In other words, an
      observer will always see the timeout occur when a wall clock reaches
      that time, even if the clock is manipulated externally.
      
      Note: ABSL_PREDICT_FALSE was removed from the error case in Futex as
      timeouts are handled by this case, and timeouts are part of normal
      operation.
      PiperOrigin-RevId: 510405347
      Change-Id: I0b3ea390de97014cfa353079ae2e0c1c637aca69
      Derek Mauro committed
  2. 16 Feb, 2023 2 commits
    • Add KernelTimeout methods that convert the timeout to the · 0372af19
      std::chrono methods used by std::condition_variable.
      
      A followup change will add an implemention of
      synchronization_internal::Waiter that can use
      std:mutex/std::condition_variable to implement the per-thread
      semaphore that absl::Mutex waits on. This implementation may at some
      point become the default on platforms such as Windows where there
      doesn't seem to be an easy way of supporting real absolute timeouts. In
      this case we can defer to their standard library to implement correct
      support.
      PiperOrigin-RevId: 510204786
      Change-Id: Icf4d695013fd060abbd53dae23e71ea36f731565
      Derek Mauro committed
    • std::shared_ptr<T>::unique() is deprecated in C++17 and removed in C++20. · 2d4c6872
      Change to checking for use_count() >/== 1.
      
      PiperOrigin-RevId: 510125744
      Change-Id: I572cca18c3f827f5d3eefb2ec19a1a014c0090ae
      Abseil Team committed
  3. 15 Feb, 2023 1 commit
  4. 14 Feb, 2023 4 commits
  5. 13 Feb, 2023 3 commits
  6. 10 Feb, 2023 2 commits
    • Workaround MSan false positive. · cde2f0ea
      On Linux Kernels >= 5.4 MSan reports a false positive when accessing thread local storage data from loaded libraries.
      
      This was reported on Chromium (which on some build configurations uses absl as a dynamic library). More info here: crbug.com/1414573.
      
      PiperOrigin-RevId: 508645053
      Change-Id: I5d5a97e1ee7230cc23f3934a4ec5594b883918b4
      Abseil Team committed
    • Rewrite KernelTimeout to support both absolute and relative timeouts · fa485540
      APIs that take KernelTimeout as a parameter can now query if an
      absolute or relative timeout was requested. If the underlying API can
      only use one type of timeout, the code will do a reasonable
      conversion.
      
      The goal is to eventually enable the possibility of using wait times
      that are based on monotonic clocks that are safe against system clock
      steps.
      
      PiperOrigin-RevId: 508541507
      Change-Id: Id08bf13515f3e1bfd78d88393cde98a6fd3ef72c
      Derek Mauro committed
  7. 09 Feb, 2023 1 commit
  8. 08 Feb, 2023 2 commits
  9. 07 Feb, 2023 1 commit
  10. 06 Feb, 2023 2 commits
  11. 04 Feb, 2023 1 commit
  12. 03 Feb, 2023 1 commit
  13. 02 Feb, 2023 3 commits
  14. 01 Feb, 2023 3 commits
  15. 31 Jan, 2023 1 commit
  16. 30 Jan, 2023 1 commit
  17. 28 Jan, 2023 1 commit
  18. 27 Jan, 2023 3 commits
  19. 26 Jan, 2023 4 commits
  20. 25 Jan, 2023 2 commits