diff --git a/rtc_base/task_utils/repeating_task.cc b/rtc_base/task_utils/repeating_task.cc index 9636680cb4..1f3eb1d064 100644 --- a/rtc_base/task_utils/repeating_task.cc +++ b/rtc_base/task_utils/repeating_task.cc @@ -70,4 +70,11 @@ bool RepeatingTaskHandle::Running() const { return repeating_task_ != nullptr; } +namespace webrtc_repeating_task_impl { +// These methods are empty, but can be externally equipped with actions using +// dtrace. +void RepeatingTaskHandleDTraceProbeStart() {} +void RepeatingTaskHandleDTraceProbeDelayedStart() {} +void RepeatingTaskImplDTraceProbeRun() {} +} // namespace webrtc_repeating_task_impl } // namespace webrtc diff --git a/rtc_base/task_utils/repeating_task.h b/rtc_base/task_utils/repeating_task.h index d5066fdb5c..91a40e0714 100644 --- a/rtc_base/task_utils/repeating_task.h +++ b/rtc_base/task_utils/repeating_task.h @@ -23,7 +23,14 @@ #include "system_wrappers/include/clock.h" namespace webrtc { + namespace webrtc_repeating_task_impl { + +// Methods simplifying external tracing of RepeatingTaskHandle operations. +void RepeatingTaskHandleDTraceProbeStart(); +void RepeatingTaskHandleDTraceProbeDelayedStart(); +void RepeatingTaskImplDTraceProbeRun(); + class RepeatingTaskBase : public QueuedTask { public: RepeatingTaskBase(TaskQueueBase* task_queue, @@ -67,7 +74,10 @@ class RepeatingTaskImpl final : public RepeatingTaskBase { } private: - TimeDelta RunClosure() override { return closure_(); } + TimeDelta RunClosure() override { + RepeatingTaskImplDTraceProbeRun(); + return closure_(); + } typename std::remove_const< typename std::remove_reference::type>::type closure_; @@ -98,6 +108,7 @@ class RepeatingTaskHandle { Closure&& closure, Clock* clock = Clock::GetRealTimeClock()) { auto alive_flag = PendingTaskSafetyFlag::CreateDetached(); + webrtc_repeating_task_impl::RepeatingTaskHandleDTraceProbeStart(); task_queue->PostTask( std::make_unique< webrtc_repeating_task_impl::RepeatingTaskImpl>( @@ -115,6 +126,7 @@ class RepeatingTaskHandle { Closure&& closure, Clock* clock = Clock::GetRealTimeClock()) { auto alive_flag = PendingTaskSafetyFlag::CreateDetached(); + webrtc_repeating_task_impl::RepeatingTaskHandleDTraceProbeDelayedStart(); task_queue->PostDelayedTask( std::make_unique< webrtc_repeating_task_impl::RepeatingTaskImpl>(