From b308bc06514600e9dedc16442fa5099050090d94 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 1 Sep 2022 09:03:32 -0700 Subject: Changes mutex profiling PiperOrigin-RevId: 471545981 Change-Id: I4d2c8b6d4f1e58976915bda78a77178b8bf80da8 --- absl/synchronization/mutex.cc | 5 ++++- absl/synchronization/mutex.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'absl/synchronization') diff --git a/absl/synchronization/mutex.cc b/absl/synchronization/mutex.cc index 2662c071..144fdee6 100644 --- a/absl/synchronization/mutex.cc +++ b/absl/synchronization/mutex.cc @@ -493,7 +493,8 @@ struct SynchWaitParams { cvmu(cvmu_arg), thread(thread_arg), cv_word(cv_word_arg), - contention_start_cycles(base_internal::CycleClock::Now()) {} + contention_start_cycles(base_internal::CycleClock::Now()), + should_submit_contention_data(false) {} const Mutex::MuHow how; // How this thread needs to wait. const Condition *cond; // The condition that this thread is waiting for. @@ -511,6 +512,7 @@ struct SynchWaitParams { int64_t contention_start_cycles; // Time (in cycles) when this thread started // to contend for the mutex. + bool should_submit_contention_data; }; struct SynchLocksHeld { @@ -2348,6 +2350,7 @@ ABSL_ATTRIBUTE_NOINLINE void Mutex::UnlockSlow(SynchWaitParams *waitp) { if (!wake_list->cond_waiter) { wait_cycles += (now - wake_list->waitp->contention_start_cycles); wake_list->waitp->contention_start_cycles = now; + wake_list->waitp->should_submit_contention_data = true; } wake_list = Wakeup(wake_list); // wake waiters } while (wake_list != kPerThreadSynchNull); diff --git a/absl/synchronization/mutex.h b/absl/synchronization/mutex.h index b69b7089..8694bb75 100644 --- a/absl/synchronization/mutex.h +++ b/absl/synchronization/mutex.h @@ -988,7 +988,7 @@ inline Condition::Condition(const T *object, method_(reinterpret_cast(method)), arg_(reinterpret_cast(const_cast(object))) {} -// Register a hook for profiling support. +// Register hooks for profiling support. // // The function pointer registered here will be called whenever a mutex is // contended. The callback is given the cycles for which waiting happened (as -- cgit v1.2.3