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