diff options
author | Sukadev Bhattiprolu <sukadev@us.ibm.com> | 2007-10-18 23:40:03 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 11:53:38 -0700 |
commit | 4c3f2ead5a3dff9069a45560ba4d007c8ae2e2ee (patch) | |
tree | ab47621edf01f64485c99cf2cde56762339c86f1 /include/linux/init_task.h | |
parent | 60347f6716aa49831ac311e04d77ccdc50dc024a (diff) | |
download | linux-4c3f2ead5a3dff9069a45560ba4d007c8ae2e2ee.tar.gz linux-4c3f2ead5a3dff9069a45560ba4d007c8ae2e2ee.tar.bz2 linux-4c3f2ead5a3dff9069a45560ba4d007c8ae2e2ee.zip |
pid namespaces: introduce struct upid
Since task will be visible from different pid namespaces each of them have to
be addressed by multiple pids. struct upid is to store the information about
which id refers to which namespace.
The constuciton looks like this. Each struct pid carried the reference
counter and the list of tasks attached to this pid. At its end it has a
variable length array of struct upid-s. Each struct upid has a numerical id
(pid itself), pointer to the namespace, this ID is valid in and is hashed into
a pid_hash for searching the pids.
The nr and pid_chain fields are kept in struct pid for a while to make kernel
still work (no patch initialize the upids yet), but it will be removed at the
end of this series when we switch to upids completely.
Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
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/init_task.h')
-rw-r--r-- | include/linux/init_task.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index d4b2f1c76e12..243e287304d0 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -103,6 +103,12 @@ extern struct group_info init_groups; { .first = &init_task.pids[PIDTYPE_SID].node }, \ }, \ .rcu = RCU_HEAD_INIT, \ + .level = 0, \ + .numbers = { { \ + .nr = 0, \ + .ns = &init_pid_ns, \ + .pid_chain = { .next = NULL, .pprev = NULL }, \ + }, } \ } #define INIT_PID_LINK(type) \ |