2012/3/19 KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>: > Now, page_cgroup->flags has only 3bits. Considering alignment of > struct mem_cgroup, which is allocated by kmalloc(), we can encode > pointer to mem_cgroup and flags into a word. > > After this patch, pc->flags is encoded as > > 63 2 0 > | pointer to memcg..........|flags| > > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> > --- > include/linux/page_cgroup.h | 15 ++++++++++++--- > 1 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h > index 92768cb..bca5447 100644 > --- a/include/linux/page_cgroup.h > +++ b/include/linux/page_cgroup.h > @@ -1,6 +1,10 @@ > #ifndef __LINUX_PAGE_CGROUP_H > #define __LINUX_PAGE_CGROUP_H > > +/* > + * Because these flags are encoded into ->flags with a pointer, > + * we cannot have too much flags. > + */ > enum { > /* flags for mem_cgroup */ > PCG_LOCK, /* Lock for pc->mem_cgroup and following bits. */ > @@ -9,6 +13,8 @@ enum { > __NR_PCG_FLAGS, > }; > > +#define PCG_FLAGS_MASK ((1 << __NR_PCG_FLAGS) - 1) > + > #ifndef __GENERATING_BOUNDS_H > #include <generated/bounds.h> > > @@ -21,10 +27,12 @@ enum { > * page_cgroup helps us identify information about the cgroup > * All page cgroups are allocated at boot or memory hotplug event, > * then the page cgroup for pfn always exists. > + * > + * flags and a pointer to memory cgroup are encoded into ->flags. > + * Lower 3bits are used for flags and others are used for a pointer to memcg. Would it be worth adding a BUILD_BUG_ON(__NR_PCG_FLAGS > 3) ? -- Suleiman -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href