krytarowski added inline comments.

================
Comment at: unittests/tools/lldb-server/tests/TestClient.cpp:115
+
+  if (thread_id == 0) thread_id = process_info->GetPid();
+
----------------
labath wrote:
> jmajors wrote:
> > labath wrote:
> > > This is a linux-ism. Other targets don't have the "pid == main thread id" 
> > > concept. What is the semantics you intended for the thread_id = 0 case? 
> > > If you wanted to resume the whole process (all threads) you can send 
> > > `vCont;c` or just `c`. We also have the LLDB_INVALID_THREAD_ID symbolic 
> > > constant to signify invalid thread.
> > I was using 0 so the caller didn't have to know what the main thread id was.
> Right, so this won't work because on netbsd (I believe) the main thread will 
> have tid = 1.
> 
> We could start special-casing the individual platforms here to get the right 
> behaviour, but I am not sure the 
> i-want-to-resume-only-the-main-thread-but-i-can't-be-bothered-to-look-it-up 
> case is common enough for that -- If you don't have a thread ID handy, most 
> of the time you will want to resume the whole process instead. So I think we 
> should have two functions, one that resumes the whole process (which takes no 
> arguments), and one that resumes only a single thread (and takes a mandatory 
> argument).
> 
> (also the argument type should be lldb::tid_t)
This is correct, process has it's PID, and it has one or more LWPs (threads). 
The main thread is 1, and it's counting 2,3,4 for second, third, fourth etc.

Thread 0 is internally (and at least in ptrace(2)) reserved for "all process" 
events.

If I know correctly, the same model is in Solaris.


https://reviews.llvm.org/D32930



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

Reply via email to