12aa1dd1cSWalter Erquinigo //===-- TraceCursor.cpp -----------------------------------------*- C++ -*-===// 22aa1dd1cSWalter Erquinigo // 32aa1dd1cSWalter Erquinigo // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42aa1dd1cSWalter Erquinigo // See https://llvm.org/LICENSE.txt for license information. 52aa1dd1cSWalter Erquinigo // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 62aa1dd1cSWalter Erquinigo // 72aa1dd1cSWalter Erquinigo //===----------------------------------------------------------------------===// 82aa1dd1cSWalter Erquinigo 92aa1dd1cSWalter Erquinigo #include "lldb/Target/TraceCursor.h" 102aa1dd1cSWalter Erquinigo 11b0aa7076SWalter Erquinigo #include "lldb/Target/ExecutionContext.h" 12a7d6c3efSWalter Erquinigo #include "lldb/Target/Trace.h" 132aa1dd1cSWalter Erquinigo 14b0aa7076SWalter Erquinigo using namespace lldb; 152aa1dd1cSWalter Erquinigo using namespace lldb_private; 16b0aa7076SWalter Erquinigo using namespace llvm; 172aa1dd1cSWalter Erquinigo TraceCursor(lldb::ThreadSP thread_sp)18b0aa7076SWalter ErquinigoTraceCursor::TraceCursor(lldb::ThreadSP thread_sp) 19b0aa7076SWalter Erquinigo : m_exe_ctx_ref(ExecutionContext(thread_sp)) {} 20b0aa7076SWalter Erquinigo GetExecutionContextRef()21b0aa7076SWalter ErquinigoExecutionContextRef &TraceCursor::GetExecutionContextRef() { 22b0aa7076SWalter Erquinigo return m_exe_ctx_ref; 23b0aa7076SWalter Erquinigo } 24b0aa7076SWalter Erquinigo SetForwards(bool forwards)25b0aa7076SWalter Erquinigovoid TraceCursor::SetForwards(bool forwards) { m_forwards = forwards; } 26b0aa7076SWalter Erquinigo IsForwards() const27b0aa7076SWalter Erquinigobool TraceCursor::IsForwards() const { return m_forwards; } 28059f39d2SWalter Erquinigo IsError() const29a7d6c3efSWalter Erquinigobool TraceCursor::IsError() const { 30a7d6c3efSWalter Erquinigo return GetItemKind() == lldb::eTraceItemKindError; 31059f39d2SWalter Erquinigo } 32059f39d2SWalter Erquinigo IsEvent() const33a7d6c3efSWalter Erquinigobool TraceCursor::IsEvent() const { 34a7d6c3efSWalter Erquinigo return GetItemKind() == lldb::eTraceItemKindEvent; 35a7d6c3efSWalter Erquinigo } 36a7d6c3efSWalter Erquinigo IsInstruction() const37a7d6c3efSWalter Erquinigobool TraceCursor::IsInstruction() const { 38a7d6c3efSWalter Erquinigo return GetItemKind() == lldb::eTraceItemKindInstruction; 39a7d6c3efSWalter Erquinigo } 40a7d6c3efSWalter Erquinigo GetEventTypeAsString() const41a7d6c3efSWalter Erquinigoconst char *TraceCursor::GetEventTypeAsString() const { 42a7d6c3efSWalter Erquinigo return EventKindToString(GetEventType()); 43a7d6c3efSWalter Erquinigo } 44a7d6c3efSWalter Erquinigo EventKindToString(lldb::TraceEvent event_kind)45a7d6c3efSWalter Erquinigoconst char *TraceCursor::EventKindToString(lldb::TraceEvent event_kind) { 46a7d6c3efSWalter Erquinigo switch (event_kind) { 47a7d6c3efSWalter Erquinigo case lldb::eTraceEventDisabledHW: 48a7d6c3efSWalter Erquinigo return "hardware disabled tracing"; 49a7d6c3efSWalter Erquinigo case lldb::eTraceEventDisabledSW: 50a7d6c3efSWalter Erquinigo return "software disabled tracing"; 514a843d92SWalter Erquinigo case lldb::eTraceEventCPUChanged: 524a843d92SWalter Erquinigo return "CPU core changed"; 53*4f676c25SWalter Erquinigo case lldb::eTraceEventHWClockTick: 54*4f676c25SWalter Erquinigo return "HW clock tick"; 55059f39d2SWalter Erquinigo } 56a1568fa2SMartin Storsjö llvm_unreachable("Fully covered switch above"); 57059f39d2SWalter Erquinigo } 58