Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9023cb7e authored by Andy Whitcroft's avatar Andy Whitcroft Committed by Linus Torvalds
Browse files

slob: record page flag overlays explicitly



SLOB reuses two page bits for internal purposes, it overlays PG_active and
PG_private.  This is hidden away in slob.c.  Document these overlays
explicitly in the main page-flags enum along with all the others.

Signed-off-by: default avatarAndy Whitcroft <apw@shadowen.org>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Christoph Lameter <cl@linux-foundation.org>
Cc: Matt Mackall <mpm@selenic.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Reviewed-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 8a38082d
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -105,6 +105,10 @@ enum pageflags {
	PG_pinned = PG_owner_priv_1,
	PG_pinned = PG_owner_priv_1,
	PG_savepinned = PG_dirty,
	PG_savepinned = PG_dirty,


	/* SLOB */
	PG_slob_page = PG_active,
	PG_slob_free = PG_private,

	/* SLUB */
	/* SLUB */
	PG_slub_frozen = PG_active,
	PG_slub_frozen = PG_active,
	PG_slub_debug = PG_error,
	PG_slub_debug = PG_error,
@@ -173,6 +177,9 @@ PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved)
PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private)
PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private)
	__SETPAGEFLAG(Private, private)
	__SETPAGEFLAG(Private, private)


__PAGEFLAG(SlobPage, slob_page)
__PAGEFLAG(SlobFree, slob_free)

__PAGEFLAG(SlubFrozen, slub_frozen)
__PAGEFLAG(SlubFrozen, slub_frozen)
__PAGEFLAG(SlubDebug, slub_debug)
__PAGEFLAG(SlubDebug, slub_debug)


+6 −6
Original line number Original line Diff line number Diff line
@@ -130,17 +130,17 @@ static LIST_HEAD(free_slob_large);
 */
 */
static inline int slob_page(struct slob_page *sp)
static inline int slob_page(struct slob_page *sp)
{
{
	return test_bit(PG_active, &sp->flags);
	return PageSlobPage((struct page *)sp);
}
}


static inline void set_slob_page(struct slob_page *sp)
static inline void set_slob_page(struct slob_page *sp)
{
{
	__set_bit(PG_active, &sp->flags);
	__SetPageSlobPage((struct page *)sp);
}
}


static inline void clear_slob_page(struct slob_page *sp)
static inline void clear_slob_page(struct slob_page *sp)
{
{
	__clear_bit(PG_active, &sp->flags);
	__ClearPageSlobPage((struct page *)sp);
}
}


/*
/*
@@ -148,19 +148,19 @@ static inline void clear_slob_page(struct slob_page *sp)
 */
 */
static inline int slob_page_free(struct slob_page *sp)
static inline int slob_page_free(struct slob_page *sp)
{
{
	return test_bit(PG_private, &sp->flags);
	return PageSlobFree((struct page *)sp);
}
}


static void set_slob_page_free(struct slob_page *sp, struct list_head *list)
static void set_slob_page_free(struct slob_page *sp, struct list_head *list)
{
{
	list_add(&sp->list, list);
	list_add(&sp->list, list);
	__set_bit(PG_private, &sp->flags);
	__SetPageSlobFree((struct page *)sp);
}
}


static inline void clear_slob_page_free(struct slob_page *sp)
static inline void clear_slob_page_free(struct slob_page *sp)
{
{
	list_del(&sp->list);
	list_del(&sp->list);
	__clear_bit(PG_private, &sp->flags);
	__ClearPageSlobFree((struct page *)sp);
}
}


#define SLOB_UNIT sizeof(slob_t)
#define SLOB_UNIT sizeof(slob_t)