Date: Thu, 27 Jan 2005 19:22:31 -0500 (EST) From: Daniel Eischen <deischen@freebsd.org> To: Medi Montaseri <mmontaseri@amcc.com> Cc: freebsd-threads@freebsd.org Subject: Re: pthread_t in 5.3 Message-ID: <Pine.GSO.4.43.0501271919080.8533-100000@sea.ntplx.net> In-Reply-To: <41F96C25.9070906@amcc.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 27 Jan 2005, Medi Montaseri wrote: > I am confused about the pthread_t type in FreeBSD 5.3, can you help.. > > Based on /usr/include/pthread.h, > typedef struct pthread *pthread_t; > and when I look for the declaration of "struct pthread" , all I find is > a forward declaration with a comment that says, > > /* > * Forward structure definitions. > * > * These are mostly opaque to the user. > */ > struct pthread; > > That is 'struct pthread' is an opaque type.... > Then in my application, when I try to find my thread_id, I say > > cout << "my tid is " << pthread_self() << endl; > and I get a hex value. Which is syntactically correct, but semantically > in-correct. Sorry, what pthread_t is, is not for you to know. It is up to the implementation to define it anyway that it wants. And is also why there is a pthread_equal() function. > I'm not interested in the pointer, I'm interested in the numerical > thread ID... There is no such thing as defined by POSIX. > Now at this point, you'll think all you have to do is to de-reference > the pointer. > But since 'struct pthrad' is opaque, gdb and myself are clueless to > proceed from here. > Can someone shed some light on this please... I think you are trying to do something that is non-standard/portable. -- DE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.43.0501271919080.8533-100000>