mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-18 17:14:28 +00:00
46 lines
1.4 KiB
Text
46 lines
1.4 KiB
Text
proc: Introduce the Children: line in /proc/<pid>/status
|
|
|
|
From: Pavel Emelyanov <xemul@parallels.com>
|
|
|
|
Although we can get the pids of some task's issue, this is just
|
|
more convenient to have them this way.
|
|
|
|
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
|
|
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
|
|
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
|
|
---
|
|
fs/proc/array.c | 14 ++++++++++++++
|
|
1 file changed, 14 insertions(+)
|
|
|
|
Index: linux-2.6.git/fs/proc/array.c
|
|
===================================================================
|
|
--- linux-2.6.git.orig/fs/proc/array.c
|
|
+++ linux-2.6.git/fs/proc/array.c
|
|
@@ -158,6 +158,18 @@ static inline const char *get_task_state
|
|
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
|
|
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);
|