mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
7af5729474
commit
198fe21b0a
4 changed files with 70 additions and 22 deletions
|
@ -99,17 +99,29 @@ extern void FASTCALL(detach_pid(struct task_struct *task, enum pid_type));
|
|||
extern void FASTCALL(transfer_pid(struct task_struct *old,
|
||||
struct task_struct *new, enum pid_type));
|
||||
|
||||
struct pid_namespace;
|
||||
extern struct pid_namespace init_pid_ns;
|
||||
|
||||
/*
|
||||
* look up a PID in the hash table. Must be called with the tasklist_lock
|
||||
* or rcu_read_lock() held.
|
||||
*
|
||||
* find_pid_ns() finds the pid in the namespace specified
|
||||
* find_pid() find the pid by its global id, i.e. in the init namespace
|
||||
* find_vpid() finr the pid by its virtual id, i.e. in the current namespace
|
||||
*
|
||||
* see also find_task_by_pid() set in include/linux/sched.h
|
||||
*/
|
||||
extern struct pid *FASTCALL(find_pid(int nr));
|
||||
extern struct pid *FASTCALL(find_pid_ns(int nr, struct pid_namespace *ns));
|
||||
|
||||
#define find_vpid(pid) find_pid_ns(pid, current->nsproxy->pid_ns)
|
||||
#define find_pid(pid) find_pid_ns(pid, &init_pid_ns)
|
||||
|
||||
/*
|
||||
* Lookup a PID in the hash table, and return with it's count elevated.
|
||||
*/
|
||||
extern struct pid *find_get_pid(int nr);
|
||||
extern struct pid *find_ge_pid(int nr);
|
||||
extern struct pid *find_ge_pid(int nr, struct pid_namespace *);
|
||||
|
||||
extern struct pid *alloc_pid(struct pid_namespace *ns);
|
||||
extern void FASTCALL(free_pid(struct pid *pid));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue