[lldb-dev] lldb patches for OpenBSD
Stephen Wilson
wilsons at start.ca
Fri Apr 1 13:39:32 PDT 2011
On Fri, Apr 01, 2011 at 11:33:35AM -0700, Greg Clayton wrote:
> A "lldb::tid_t" is a thread ID, not a thread opaque pointer. The
> "lldb::thread_t" is the already the correct type for the host system's
> "thread opaque pointer", but that isn't what this function is trying
> to return.
>
> Dooes linux or BSD have the notion of a thread ID for the current
> thread that isn't just a pthread_t?
Linux has gettid(2), so yes.
> This function is used mostly for logging when you want to log the
> current process ID and the current thread ID.
Just some thoughts:
Platforms that use user-space thread library implementations can provide
some Host code that maps pthread_t pointers (or whatever) via a hash to
useful 32-bit numeric id's. We could do that in Host::ThreadCreate for
example. It really then becomes an issue for the Host to figure out how
to make those ID's useful from a logging/user perspective.
But without a good way to map/log those ID's, doing a simple truncation
on a pointer is probably just fine *most* of the time since those last
bits are going to be the unique ones anyway.
So even though the lldb::tid_t(pthread_self()) is "wrong", it still
does what it needs to do in this case; give a per-thread-unique integer
identifier.
So I think the main question is: does having the full 64 bit pointer as
an ID give useful info to the developers using user-space threads? I
mean, is there some tool (top, ps, etc) or function that one can use to
map those values into something meaningful, or is uniqueness the only
thing that matters?
--
steve
More information about the lldb-dev
mailing list