1*81ad6265SDimitry Andric #include "TaskTimer.h" 2*81ad6265SDimitry Andric 3*81ad6265SDimitry Andric using namespace lldb; 4*81ad6265SDimitry Andric using namespace lldb_private; 5*81ad6265SDimitry Andric using namespace lldb_private::trace_intel_pt; 6*81ad6265SDimitry Andric using namespace llvm; 7*81ad6265SDimitry Andric 8*81ad6265SDimitry Andric void ScopedTaskTimer::ForEachTimedTask( 9*81ad6265SDimitry Andric std::function<void(const std::string &event, 10*81ad6265SDimitry Andric std::chrono::milliseconds duration)> 11*81ad6265SDimitry Andric callback) { 12*81ad6265SDimitry Andric for (const auto &kv : m_timed_tasks) { 13*81ad6265SDimitry Andric callback(kv.first, kv.second); 14*81ad6265SDimitry Andric } 15*81ad6265SDimitry Andric } 16*81ad6265SDimitry Andric 17*81ad6265SDimitry Andric ScopedTaskTimer &TaskTimer::ForThread(lldb::tid_t tid) { 18*81ad6265SDimitry Andric auto it = m_thread_timers.find(tid); 19*81ad6265SDimitry Andric if (it == m_thread_timers.end()) 20*81ad6265SDimitry Andric it = m_thread_timers.try_emplace(tid, ScopedTaskTimer{}).first; 21*81ad6265SDimitry Andric return it->second; 22*81ad6265SDimitry Andric } 23*81ad6265SDimitry Andric 24*81ad6265SDimitry Andric ScopedTaskTimer &TaskTimer::ForGlobal() { return m_global_timer; } 25