summaryrefslogtreecommitdiff
path: root/libc/malloc_debug/DebugData.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2018-03-05 14:14:44 -0800
committerTom Cherry <tomcherry@google.com>2018-03-20 18:41:22 -0700
commitc6b5bcd182edef34f058827882b1908f890cc4cd (patch)
tree63b9b787f9434c2424f0c2957eb8ce668cb9bd69 /libc/malloc_debug/DebugData.cpp
parent0bc4772ee5e9cbf772227732135fd13e125571a9 (diff)
Add _monotonic_np versions of timed wait functions
As a follow up to Ibba98f5d88be1c306d14e9b9366302ecbef6d534, where we added a work around to convert the CLOCK_REALTIME timeouts to CLOCK_MONOTONIC for pthread and semaphore timed wait functions, we're introducing a set of _monotonic_np versions of each of these functions that wait on CLOCK_MONOTONIC directly. The primary motivation here is that while the above work around helps for 3rd party code, it creates a dilemma when implementing new code that would use these functions: either one implements code with these functions knowing there is a race condition possible or one avoids these functions and reinvent their own waiting/signaling mechanisms. Neither are satisfactory, so we create a third option to use these Android specific _monotonic_np functions that completely remove the race condition while keeping the rest of the interface. Specifically this adds the below functions: pthread_mutex_timedlock_monotonic_np() pthread_cond_timedwait_monotonic_np() pthread_rwlock_timedrdlock_monotonic_np() pthread_rwlock_timedwrlock_monotonic_np() sem_timedwait_monotonic_np() Note that pthread_cond_timedwait_monotonic_np() previously existed and was removed since it's possible to initialize a condition variable to use CLOCK_MONOTONIC. It is added back for a mix of reasons, 1) Symmetry with the rest of the functions we're adding 2) libc++ cannot easily take advantage of the new initializer, but will be able to use this function in order to wait on std::steady_clock 3) Frankly, it's a better API to specify the clock in the waiter function than to specify the clock when the condition variable is initialized. Bug: 73951740 Test: new unit tests Change-Id: I23aa5c204e36a194237d41e064c5c8ccaa4204e3
Diffstat (limited to 'libc/malloc_debug/DebugData.cpp')
0 files changed, 0 insertions, 0 deletions