On Thu, 3 Jun 2010, V??clav Haisman wrote:
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?
I think the value that it is showing (28426ec0) is the hex
value of the pthread_t (pointer). You can also use
pthread_[gs]etname_np() from <pthread_np.h> if you want
to associate an string identifier with a thread.
--
DE
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"