xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/Trace/intel-pt/TaskTimer.cpp (revision 81ad626541db97eb356e2c1d4a20eb2a26a766ab)
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