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>
This commit is contained in:
committed by
Linus Torvalds
parent
ab883af53e
commit
caafa43243
@@ -60,7 +60,7 @@ struct pid
|
|||||||
/* lists of tasks that use this pid */
|
/* lists of tasks that use this pid */
|
||||||
struct hlist_head tasks[PIDTYPE_MAX];
|
struct hlist_head tasks[PIDTYPE_MAX];
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
int level;
|
unsigned int level;
|
||||||
struct upid numbers[1];
|
struct upid numbers[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@ struct pid_namespace {
|
|||||||
int last_pid;
|
int last_pid;
|
||||||
struct task_struct *child_reaper;
|
struct task_struct *child_reaper;
|
||||||
struct kmem_cache *pid_cachep;
|
struct kmem_cache *pid_cachep;
|
||||||
int level;
|
unsigned int level;
|
||||||
struct pid_namespace *parent;
|
struct pid_namespace *parent;
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
struct vfsmount *proc_mnt;
|
struct vfsmount *proc_mnt;
|
||||||
|
@@ -66,7 +66,7 @@ err_alloc:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pid_namespace *create_pid_namespace(int level)
|
static struct pid_namespace *create_pid_namespace(unsigned int level)
|
||||||
{
|
{
|
||||||
struct pid_namespace *ns;
|
struct pid_namespace *ns;
|
||||||
int i;
|
int i;
|
||||||
|
Reference in New Issue
Block a user