Skip to content

Commit

Permalink
Avoid duplicate _count variables in page_struct
Browse files Browse the repository at this point in the history
Restructure the union / struct cascade in struct page so that
we only have one definition of _count.

Tested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
  • Loading branch information
Christoph Lameter authored and Pekka Enberg committed Jul 18, 2011
1 parent 3adf004 commit 013e896
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions include/linux/mm_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,30 +49,31 @@ struct page {
* see PAGE_MAPPING_ANON below.
*/
/* Second double word */
union {
struct {
struct {
union {
pgoff_t index; /* Our offset within mapping. */
atomic_t _mapcount; /* Count of ptes mapped in mms,
void *freelist; /* slub first free object */
};

union {
/* Used for cmpxchg_double in slub */
unsigned long counters;

struct {

union {
atomic_t _mapcount; /* Count of ptes mapped in mms,
* to show when page is mapped
* & limit reverse map searches.
*/
atomic_t _count; /* Usage count, see below. */
};

struct { /* SLUB cmpxchg_double area */
void *freelist;
union {
unsigned long counters;
struct {
unsigned inuse:16;
unsigned objects:15;
unsigned frozen:1;
/*
* Kernel may make use of this field even when slub
* uses the rest of the double word!
*/
atomic_t _count;
struct {
unsigned inuse:16;
unsigned objects:15;
unsigned frozen:1;
};
};
atomic_t _count; /* Usage count, see below. */
};
};
};
Expand Down

0 comments on commit 013e896

Please sign in to comment.