wallace added inline comments.

================
Comment at: lldb/docs/lldb-gdb-remote.txt:372-374
+//         This limit applies to the sum of the sizes of all trace and core
+//         buffers for the current process, excluding the ones started with
+//         "thread tracing".
----------------
jj10306 wrote:
> Not sure what is trying to be communicated hear, so maybe my suggestion 
> doesn't make sense, but I was confused by the wording here
you are right!


================
Comment at: lldb/docs/lldb-gdb-remote.txt:465-474
 //      "tid": <decimal integer>,
 //      "binaryData": [
 //        {
 //          "kind": <string>,
 //              Identifier for some binary data related to this thread to
 //              fetch with the jLLDBTraceGetBinaryData packet.
 //          "size": <decimal integer>,
----------------
jj10306 wrote:
> Should the thread info be optional now that we have an optional `cores`? If 
> not, can you explain how this output works in the case that you are doing per 
> core tracing? Will both the tid binary data and the cores binary data section 
> be populated?
I'll make this field optional and include more documentation below


================
Comment at: lldb/include/lldb/lldb-types.h:92
 typedef uint64_t queue_id_t;
+typedef int core_id_t; // CPU core id
 } // namespace lldb
----------------
jj10306 wrote:
> nit: this should be an unsigned int of some sort?
I wasn't sure if int would be correct for all platforms, but in any case, I 
should go for unsigned, as you suggest, which is a more restrictive type, and 
if in the future someone needs a signed int, they could change this type


================
Comment at: lldb/source/Plugins/Process/Linux/IntelPTCollector.cpp:228-234
+  return m_per_thread_process_trace_up->TraceStart(tid);
 }
 
 Error IntelPTCollector::OnThreadDestroyed(lldb::tid_t tid) {
-  if (IsProcessTracingEnabled() && m_process_trace->TracesThread(tid))
-    return m_process_trace->TraceStop(tid);
+  if (IsProcessTracingEnabled() &&
+      m_per_thread_process_trace_up->TracesThread(tid))
+    return m_per_thread_process_trace_up->TraceStop(tid);
----------------
jj10306 wrote:
> Do we not need to check if `m_per_thread_process_trace_up` is null here (aka 
> per core tracing is enabled)?
I need to check that m_per_thread_process_trace_up exists


================
Comment at: lldb/source/Plugins/Process/Linux/IntelPTCollector.cpp:260
+  }
+  if (m_per_core_process_trace_up) {
+    state.cores.emplace();
----------------
jj10306 wrote:
> Should this be an "else if" if these two are mutually exclusive?
good idea


================
Comment at: lldb/source/Plugins/Process/Linux/IntelPTCollector.h:63-64
+
+/// Manages a "process trace" instance by tracing each thread individually.
+class IntelPTPerThreadProcessTrace {
 public:
----------------
jj10306 wrote:
> Why is this named "PerThread" if it handles both the per thread and per core 
> cases for "process trace"? Perhaps I'm missing something
this doesn't handle the per core case. This is handling exclusively the case of 
"process trace" without the "per-cpu" option. This class effectively creates a 
perf event per thread. Even its Start method asks for tids


================
Comment at: lldb/source/Plugins/Process/Linux/IntelPTCollector.h:152-156
+  IntelPTPerThreadProcessTraceUP m_per_thread_process_trace_up;
+  /// Cores traced due to per-core "process tracing". Only one active
+  /// "process tracing" instance is allowed for a single process.
+  /// This might be \b nullptr.
+  IntelPTMultiCoreTraceUP m_per_core_process_trace_up;
----------------
jj10306 wrote:
> So these are mutually exclusive tight?
yes, I'll leave a comment about that here


================
Comment at: lldb/source/Plugins/Process/Linux/IntelPTMultiCoreTrace.cpp:20-22
+  int64_t required = cores.size() * request.trace_buffer_size;
+  int64_t limit = request.process_buffer_size_limit.getValueOr(
+      std::numeric_limits<int64_t>::max());
----------------
jj10306 wrote:
> nit: why are we using signed integers here?
yes, this is bad, i'm changing to unsigned


================
Comment at: lldb/source/Plugins/Process/Linux/Perf.h:111-115
   /// \param[in] pid
-  ///     The process to be monitored by the event.
+  ///     The process or thread to be monitored by the event.
   ///
   /// \param[in] cpu
   ///     The cpu to be monitored by the event.
----------------
jj10306 wrote:
> Maybe add explanation of what is passed to the syscall for pid and cpu when 
> they are `None` here?
makes sense


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124858/new/

https://reviews.llvm.org/D124858

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to