pid: Implement PIDTYPE_TGID
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 4 Jun 2017 09:32:13 +0000 (04:32 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Sat, 21 Jul 2018 15:43:12 +0000 (10:43 -0500)
commit6883f81aac6f44e7df70a6af189b3689ff52cbfb
tree184e376d23aa5ea7321e22f23dd78a3c77c74a63
parent2c4704756cab7cfa031ada4dab361562f0e357c0
pid: Implement PIDTYPE_TGID

Everywhere except in the pid array we distinguish between a tasks pid and
a tasks tgid (thread group id).  Even in the enumeration we want that
distinction sometimes so we have added __PIDTYPE_TGID.  With leader_pid
we almost have an implementation of PIDTYPE_TGID in struct signal_struct.

Add PIDTYPE_TGID as a first class member of the pid_type enumeration and
into the pids array.  Then remove the __PIDTYPE_TGID special case and the
leader_pid in signal_struct.

The net size increase is just an extra pointer added to struct pid and
an extra pair of pointers of an hlist_node added to task_struct.

The effect on code maintenance is the removal of a number of special
cases today and the potential to remove many more special cases as
PIDTYPE_TGID gets used to it's fullest.  The long term potential
is allowing zombie thread group leaders to exit, which will remove
a lot more special cases in the code.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
14 files changed:
arch/ia64/kernel/asm-offsets.c
arch/ia64/kernel/fsys.S
arch/s390/kernel/perf_cpum_sf.c
fs/exec.c
include/linux/pid.h
include/linux/sched.h
include/linux/sched/signal.h
init/init_task.c
kernel/events/core.c
kernel/exit.c
kernel/fork.c
kernel/pid.c
kernel/time/itimer.c
kernel/time/posix-cpu-timers.c