How to get a thread ID?

pluknet pluknet at gmail.com
Thu Jun 3 19:55:23 UTC 2010


2010/6/3 Václav Haisman <v.haisman at sh.cvut.cz>:
> Kostik Belousov wrote, On 3.6.2010 17:19:
>> On Thu, Jun 03, 2010 at 09:44:52AM -0500, Dan Nelson wrote:
>>> In the last episode (Jun 03), V??clav Haisman said:
>>>> 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.
>>>
>>> The return value of pthread_self() is a pointer to the (private) "struct
>>> pthread" for the current thread, and should uniquely identify a thread.  Do
>>> you have a testcase that shows otherwise?  GDB might just enumerate the
>>> currently active threads starting from 1.
>>
>> There is thr_self(2) undocumented syscall:
>> int thr_self(long *id);
> Thanks, I'll try it. Is the returned ID the LWP ID that GDB shows?
>

thr_self() does its work as well as ddb and procstat do: using td->td_tid.

-- 
wbr,
pluknet


More information about the freebsd-hackers mailing list