Skip to content
  • Eric W. Biederman's avatar
    [PATCH] pid: implement access helpers for a tacks various process groups · 22c935f4
    Eric W. Biederman authored
    
    
    In the last round of cleaning up the pid hash table a more general struct pid
    was introduced, that can be referenced counted.
    
    With the more general struct pid most if not all places where we store a pid_t
    we can now store a struct pid * and remove the need for a hash table lookup,
    and avoid any possible problems with pid roll over.
    
    Looking forward to the pid namespaces struct pid * gives us an absolute form a
    pid so we can compare and use them without caring which pid namespace we are
    in.
    
    This patchset introduces the infrastructure needed to use struct pid instead
    of pid_t, and then it goes on to convert two different kernel users that
    currently store a pid_t value.
    
    There are a lot more places to go but this is enough to get the basic idea.
    
    Before we can merge a pid namespace patch all of the kernel pid_t users need
    to be examined.  Those that deal with user space processes need to be
    converted to using a struct pid *.  Those that deal with kernel processes need
    to converted to using the kthread api.  A rare few that only use their current
    processes pid values get to be left alone.
    
    This patch:
    
    task_session returns the struct pid of a tasks session.
    task_pgrp    returns the struct pid of a tasks process group.
    task_tgid    returns the struct pid of a tasks thread group.
    task_pid     returns the struct pid of a tasks process id.
    
    These can be used to avoid unnecessary hash table lookups, and to implement
    safe pid comparisions in the face of a pid namespace.
    
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    22c935f4