diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-04-30 03:54:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-30 11:29:49 -0400 |
commit | caafa4324335aeb11bc233d5f87aca8cce30beba (patch) | |
tree | b6371b0c084ffb91f7304a7e392b28ccfdab8a2e | |
parent | ab883af53ec1b87add43b32a28d8347f17d5155b (diff) |
pidns: make pid->level and pid_ns->level unsigned
These values represent the nesting level of a namespace and pids living in it,
and it's always non-negative.
Turning this from int to unsigned int saves some space in pid.c (11 bytes on
x86 and 64 on ia64) by letting the compiler optimize the pid_nr_ns a bit.
E.g. on ia64 this removes the sign extension calls, which compiler adds to
optimize access to pid->nubers[ns->level].
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
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>
-rw-r--r-- | include/linux/pid.h | 2 | ||||
-rw-r--r-- | include/linux/pid_namespace.h | 2 | ||||
-rw-r--r-- | kernel/pid_namespace.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/pid.h b/include/linux/pid.h index 8d199033c0ca..c21c7e8124a7 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h | |||
@@ -60,7 +60,7 @@ struct pid | |||
60 | /* lists of tasks that use this pid */ | 60 | /* lists of tasks that use this pid */ |
61 | struct hlist_head tasks[PIDTYPE_MAX]; | 61 | struct hlist_head tasks[PIDTYPE_MAX]; |
62 | struct rcu_head rcu; | 62 | struct rcu_head rcu; |
63 | int level; | 63 | unsigned int level; |
64 | struct upid numbers[1]; | 64 | struct upid numbers[1]; |
65 | }; | 65 | }; |
66 | 66 | ||
diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h index fcd61fa2c833..caff5283d15c 100644 --- a/include/linux/pid_namespace.h +++ b/include/linux/pid_namespace.h | |||
@@ -20,7 +20,7 @@ struct pid_namespace { | |||
20 | int last_pid; | 20 | int last_pid; |
21 | struct task_struct *child_reaper; | 21 | struct task_struct *child_reaper; |
22 | struct kmem_cache *pid_cachep; | 22 | struct kmem_cache *pid_cachep; |
23 | int level; | 23 | unsigned int level; |
24 | struct pid_namespace *parent; | 24 | struct pid_namespace *parent; |
25 | #ifdef CONFIG_PROC_FS | 25 | #ifdef CONFIG_PROC_FS |
26 | struct vfsmount *proc_mnt; | 26 | struct vfsmount *proc_mnt; |
diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c index 5ca37fa50beb..98702b4b8851 100644 --- a/kernel/pid_namespace.c +++ b/kernel/pid_namespace.c | |||
@@ -66,7 +66,7 @@ err_alloc: | |||
66 | return NULL; | 66 | return NULL; |
67 | } | 67 | } |
68 | 68 | ||
69 | static struct pid_namespace *create_pid_namespace(int level) | 69 | static struct pid_namespace *create_pid_namespace(unsigned int level) |
70 | { | 70 | { |
71 | struct pid_namespace *ns; | 71 | struct pid_namespace *ns; |
72 | int i; | 72 | int i; |