From 7af5729474b5b8ad385adadab78d6e723e7655a3 Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Thu, 18 Oct 2007 23:40:06 -0700 Subject: pid namespaces: helpers to obtain pid numbers When showing pid to user or getting the pid numerical id for in-kernel use the value of this id may differ depending on the namespace. This set of helpers is used to get the global pid nr, the virtual (i.e. seen by task in its namespace) nr and the nr as it is seen from the specified namespace. Signed-off-by: Pavel Emelyanov Cc: Oleg Nesterov Cc: Sukadev Bhattiprolu Cc: Paul Menage Cc: "Eric W. Biederman" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- kernel/pid.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'kernel/pid.c') diff --git a/kernel/pid.c b/kernel/pid.c index 8132a6ddfa1..6eb14841b73 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -376,6 +376,19 @@ struct pid *find_get_pid(pid_t nr) return pid; } +pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns) +{ + struct upid *upid; + pid_t nr = 0; + + if (pid && ns->level <= pid->level) { + upid = &pid->numbers[ns->level]; + if (upid->ns == ns) + nr = upid->nr; + } + return nr; +} + /* * Used by proc to find the first pid that is greater then or equal to nr. * -- cgit v1.2.3