How to get a thread ID?

Václav Haisman v.haisman at sh.cvut.cz
Thu Jun 3 19:15:27 UTC 2010


Daniel Eischen wrote, On 3.6.2010 16:51:
> On Thu, 3 Jun 2010, Václav Haisman wrote:
> 
>>
>> Hi,
>> is it possible to obtain some sort of a thread ID that identifies a thread
>> within a process other than pthread_self()? Something like gettid() on
>> Linux? Apparently, on FreeBSD the pthread_t is a pointer type and does not
>> identify the thread well enough. GDB on FreeBSD seems to know about threads
>> and does not seem to use the same ID as is pthread_t.
> 
> "identifies a thread" well enough for what?  pthread_t is suppose
> to be opaque.  Whether it is an int, pointer, or whatever, it is
> implementation-defined and not suppose provide any more information
> than available through the standard pthread interfaces.  There are
> some non-portable interfaces in <pthread_np.h> though.
Exactly, pthread_t is opaque and it thus it is only by a chance that I can
print its value, it is a pointer on FreeBSD. It could as well be a struct and
then I could not possibly do anything to print the thread identity on screen.

* 4 Thread 28426ec0 (LWP 100172)  0x0804b9f6 in TestThread::run ()

As shown above, GDB can show some sort of ID, the LWP bit. How does it get
it? Is it possible to get the LWP ID from inside the process without
debugging it?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20100603/a94f02c1/signature.pgp


More information about the freebsd-hackers mailing list