Skip site navigation (1)Skip section navigation (2)
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>