Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Jun 2010 23:55:21 +0400
From:      pluknet <pluknet@gmail.com>
To:        =?ISO-8859-1?Q?V=E1clav_Haisman?= <v.haisman@sh.cvut.cz>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: How to get a thread ID?
Message-ID:  <AANLkTinlYBQRne3nc7-EUVBD70rZHMlpcsANwnacdyyq@mail.gmail.com>
In-Reply-To: <4C07FF8C.1090800@sh.cvut.cz>
References:  <6e716c850fa84621482b71826dae55d5@shell.sh.cvut.cz> <20100603144452.GC85961@dan.emsphone.com> <20100603151915.GI83316@deviant.kiev.zoral.com.ua> <4C07FF8C.1090800@sh.cvut.cz>

next in thread | previous in thread | raw e-mail | index | archive | help
2010/6/3 V=E1clav Haisman <v.haisman@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 th=
read
>>>> within a process other than pthread_self()? =A0Something like gettid()=
 on
>>>> Linux? =A0Apparently, on FreeBSD the pthread_t is a pointer type and d=
oes
>>>> not identify the thread well enough. =A0GDB on FreeBSD seems to know a=
bout
>>>> 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) "struc=
t
>>> pthread" for the current thread, and should uniquely identify a thread.=
 =A0Do
>>> you have a testcase that shows otherwise? =A0GDB might just enumerate t=
he
>>> 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.

--=20
wbr,
pluknet



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTinlYBQRne3nc7-EUVBD70rZHMlpcsANwnacdyyq>