diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2007-10-19 02:40:06 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 14:53:39 -0400 |
commit | 198fe21b0a17fe9c68cb519ecc566534b04f122b (patch) | |
tree | 690825669858d0f458fc137e42adf77cdf370ea4 /include/linux/sched.h | |
parent | 7af5729474b5b8ad385adadab78d6e723e7655a3 (diff) |
pid namespaces: helpers to find the task by its numerical ids
When searching the task by numerical id on may need to find it using global
pid (as it is done now in kernel) or by its virtual id, e.g. when sending a
signal to a task from one namespace the sender will specify the task's virtual
id and we should find the task by this value.
[akpm@linux-foundation.org: fix gfs2 linkage]
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Sukadev Bhattiprolu <sukadev@us.ibm.com>
Cc: Paul Menage <menage@google.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 77e8cad3b17a..511cc4549f58 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1514,8 +1514,35 @@ extern struct task_struct init_task; | |||
1514 | 1514 | ||
1515 | extern struct mm_struct init_mm; | 1515 | extern struct mm_struct init_mm; |
1516 | 1516 | ||
1517 | #define find_task_by_pid(nr) find_task_by_pid_type(PIDTYPE_PID, nr) | 1517 | extern struct pid_namespace init_pid_ns; |
1518 | extern struct task_struct *find_task_by_pid_type(int type, int pid); | 1518 | |
1519 | /* | ||
1520 | * find a task by one of its numerical ids | ||
1521 | * | ||
1522 | * find_task_by_pid_type_ns(): | ||
1523 | * it is the most generic call - it finds a task by all id, | ||
1524 | * type and namespace specified | ||
1525 | * find_task_by_pid_ns(): | ||
1526 | * finds a task by its pid in the specified namespace | ||
1527 | * find_task_by_pid_type(): | ||
1528 | * finds a task by its global id with the specified type, e.g. | ||
1529 | * by global session id | ||
1530 | * find_task_by_pid(): | ||
1531 | * finds a task by its global pid | ||
1532 | * | ||
1533 | * see also find_pid() etc in include/linux/pid.h | ||
1534 | */ | ||
1535 | |||
1536 | extern struct task_struct *find_task_by_pid_type_ns(int type, int pid, | ||
1537 | struct pid_namespace *ns); | ||
1538 | |||
1539 | #define find_task_by_pid_ns(nr, ns) \ | ||
1540 | find_task_by_pid_type_ns(PIDTYPE_PID, nr, ns) | ||
1541 | #define find_task_by_pid_type(type, nr) \ | ||
1542 | find_task_by_pid_type_ns(type, nr, &init_pid_ns) | ||
1543 | #define find_task_by_pid(nr) \ | ||
1544 | find_task_by_pid_type(PIDTYPE_PID, nr) | ||
1545 | |||
1519 | extern void __set_special_pids(pid_t session, pid_t pgrp); | 1546 | extern void __set_special_pids(pid_t session, pid_t pgrp); |
1520 | 1547 | ||
1521 | /* per-UID process charging. */ | 1548 | /* per-UID process charging. */ |