1*1188faa7SWalter Erquinigo //===-- IntelPTPerThreadProcessTrace.cpp ----------------------------------===// 2*1188faa7SWalter Erquinigo // 3*1188faa7SWalter Erquinigo // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*1188faa7SWalter Erquinigo // See https://llvm.org/LICENSE.txt for license information. 5*1188faa7SWalter Erquinigo // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*1188faa7SWalter Erquinigo // 7*1188faa7SWalter Erquinigo //===----------------------------------------------------------------------===// 8*1188faa7SWalter Erquinigo 9*1188faa7SWalter Erquinigo #include "IntelPTPerThreadProcessTrace.h" 10*1188faa7SWalter Erquinigo 11*1188faa7SWalter Erquinigo using namespace lldb; 12*1188faa7SWalter Erquinigo using namespace lldb_private; 13*1188faa7SWalter Erquinigo using namespace process_linux; 14*1188faa7SWalter Erquinigo using namespace llvm; 15*1188faa7SWalter Erquinigo 16*1188faa7SWalter Erquinigo bool IntelPTPerThreadProcessTrace::TracesThread(lldb::tid_t tid) const { 17*1188faa7SWalter Erquinigo return m_thread_traces.TracesThread(tid); 18*1188faa7SWalter Erquinigo } 19*1188faa7SWalter Erquinigo 20*1188faa7SWalter Erquinigo Error IntelPTPerThreadProcessTrace::TraceStop(lldb::tid_t tid) { 21*1188faa7SWalter Erquinigo return m_thread_traces.TraceStop(tid); 22*1188faa7SWalter Erquinigo } 23*1188faa7SWalter Erquinigo 24*1188faa7SWalter Erquinigo Error IntelPTPerThreadProcessTrace::TraceStart(lldb::tid_t tid) { 25*1188faa7SWalter Erquinigo if (m_thread_traces.GetTotalBufferSize() + 26*1188faa7SWalter Erquinigo m_tracing_params.trace_buffer_size > 27*1188faa7SWalter Erquinigo static_cast<size_t>(*m_tracing_params.process_buffer_size_limit)) 28*1188faa7SWalter Erquinigo return createStringError( 29*1188faa7SWalter Erquinigo inconvertibleErrorCode(), 30*1188faa7SWalter Erquinigo "Thread %" PRIu64 " can't be traced as the process trace size limit " 31*1188faa7SWalter Erquinigo "has been reached. Consider retracing with a higher " 32*1188faa7SWalter Erquinigo "limit.", 33*1188faa7SWalter Erquinigo tid); 34*1188faa7SWalter Erquinigo 35*1188faa7SWalter Erquinigo return m_thread_traces.TraceStart(tid, m_tracing_params); 36*1188faa7SWalter Erquinigo } 37*1188faa7SWalter Erquinigo 38*1188faa7SWalter Erquinigo IntelPTThreadTraceCollection &IntelPTPerThreadProcessTrace::GetThreadTraces() { 39*1188faa7SWalter Erquinigo return m_thread_traces; 40*1188faa7SWalter Erquinigo } 41