Re: Using getpid() often, another way? [was Re: clone() <-> getpid() bug in 2.6?]

Robert Love
2004-06-06T15:44:14Z

On Sun, 2004-06-06 at 11:38 -0400, Russell Leighton wrote:

> Given a code library with some exported functions which CAN be
> executed outside a particular thread and others that MUST be executed in
> a particular thread, how can I efficiently prevent or trap using of
> these functions outside the proper execution context?

Are you sure you cannot use pthreads? The new implementation (NPTL) has
a lot of improvements, including saner signal handling behavior.

If not, you probably are out of luck. Best I can think of is somehow
using thread-specific storage, but you would obviously need to index
into it using something OTHER than the PID. Which basically leaves you
with the stack. So, unless you could cache the PID in a local
variable..

> Would gettid() be any better?

If you aren't using CLONE_THREAD, gettid() will just return the PID.
And if you were using CLONE_THREAD, then getpid() would be worthless for
you and you would have to use gettid(). Either way, though, they
basically do the same thing (return current->tid vs. current->pid).

Robert Love