From: Pavel Emelyanov There is no easy way to make a reverse parent->children chain from the task status, in turn children->parent provided with "PPid" field. So instead of walking over all pids in system to figure out what children the task have -- we add explicit "Children" member to /proc//status since kernel already knows this kind of information but it was not yet exported. Signed-off-by: Pavel Emelyanov Acked-by: Serge Hallyn Signed-off-by: Cyrill Gorcunov --- fs/proc/array.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -158,6 +158,18 @@ static inline const char *get_task_state(struct task_struct *tsk) return *p; } +static void task_children(struct seq_file *m, struct task_struct *p, struct pid_namespace *ns) +{ + struct task_struct *c; + + seq_printf(m, "Children:"); + read_lock(&tasklist_lock); + list_for_each_entry(c, &p->children, sibling) + seq_printf(m, " %d", pid_nr_ns(task_pid(c), ns)); + read_unlock(&tasklist_lock); + seq_putc(m, '\n'); +} + static inline void task_state(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *p) { @@ -192,6 +204,8 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, cred->uid, cred->euid, cred->suid, cred->fsuid, cred->gid, cred->egid, cred->sgid, cred->fsgid); + task_children(m, p, ns); + task_lock(p); if (p->files) fdt = files_fdtable(p->files); -- 1.7.7.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/