[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: what's the relationship between tgid, tid and pid ?



On Thu, 5 Dec 2002, Roland McGrath wrote:

> "tgid" is the PID of the whole POSIX.1 process.
> "pid" is a per-thread PID-like number.

there's a "PID number space" under Linux, and "PID types". Each PID type
allocates from the same base number space, but they can also share the
same PID, ie. are overlayed:

enum pid_type
{
        PIDTYPE_PID,
        PIDTYPE_TGID,
        PIDTYPE_PGID,
        PIDTYPE_SID,

the 'TGID' is the "process PID" as in POSIX.1. The 'PID' is the same for
standalone processes and for leader threads, it's different for threads.  
Furthermore, the PID is also globally unique, and is recognized by the
sys_tkill() interface - ie. you can send signals between threads of
different "processes". The 'PGID' is the process group PID. The 'SID' is
the session ID.

the kernel guarantees reference counting, ie. only when the last type
detaches a given number is it allocatable again. This is partly required
by semantics for things like the PGID and the SID, and it's simply handy
for things like the thread identificator.

	Ingo





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]