From: Peter Zijlstra Abstract the replacement policy specific pageflags. Signed-off-by: Peter Zijlstra include/linux/mm_lru_policy.h | 15 +++++++++++++++ include/linux/page-flags.h | 15 ++------------- mm/page_alloc.c | 8 ++++---- 3 files changed, 21 insertions(+), 17 deletions(-) Index: linux-2.6-uml/include/linux/mm_lru_policy.h =================================================================== --- linux-2.6-uml.orig/include/linux/mm_lru_policy.h 2006-02-23 21:57:34.000000000 +0100 +++ linux-2.6-uml/include/linux/mm_lru_policy.h 2006-02-23 22:00:09.000000000 +0100 @@ -4,6 +4,21 @@ #ifdef __KERNEL__ #include +#include + +#define PG_active PG_reclaim1 +#define PG_new PG_reclaim2 + +#define PageActive(page) test_bit(PG_active, &(page)->flags) +#define SetPageActive(page) set_bit(PG_active, &(page)->flags) +#define ClearPageActive(page) clear_bit(PG_active, &(page)->flags) +#define TestClearPageActive(page) test_and_clear_bit(PG_active, &(page)->flags) +#define TestSetPageActive(page) test_and_set_bit(PG_active, &(page)->flags) + +#define PageNew(page) test_bit(PG_new, &(page)->flags) +#define SetPageNew(page) set_bit(PG_new, &(page)->flags) +#define ClearPageNew(page) clear_bit(PG_new, &(page)->flags) +#define TestClearPageNew(page) test_and_clear_bit(PG_new, &(page)->flags) static inline void page_replace_hint_active(struct page *page) { Index: linux-2.6-uml/include/linux/page-flags.h =================================================================== --- linux-2.6-uml.orig/include/linux/page-flags.h 2006-02-23 21:56:23.000000000 +0100 +++ linux-2.6-uml/include/linux/page-flags.h 2006-02-23 21:57:40.000000000 +0100 @@ -58,7 +58,7 @@ #define PG_dirty 4 #define PG_lru 5 -#define PG_active 6 +#define PG_reclaim1 6 /* reserved by the mm reclaim code */ #define PG_slab 7 /* slab debug (Suparna wants this) */ #define PG_checked 8 /* kill me in 2.5.. */ @@ -76,7 +76,7 @@ #define PG_nosave_free 18 /* Free, should not be written */ #define PG_uncached 19 /* Page has been mapped as uncached */ -#define PG_new 20 /* Newly allocated page */ +#define PG_reclaim2 20 /* reserved by the mm reclaim code */ /* * Global page accounting. One instance per CPU. Only unsigned longs are * allowed. @@ -245,12 +245,6 @@ extern void __mod_page_state_offset(unsi #define TestSetPageLRU(page) test_and_set_bit(PG_lru, &(page)->flags) #define TestClearPageLRU(page) test_and_clear_bit(PG_lru, &(page)->flags) -#define PageActive(page) test_bit(PG_active, &(page)->flags) -#define SetPageActive(page) set_bit(PG_active, &(page)->flags) -#define ClearPageActive(page) clear_bit(PG_active, &(page)->flags) -#define TestClearPageActive(page) test_and_clear_bit(PG_active, &(page)->flags) -#define TestSetPageActive(page) test_and_set_bit(PG_active, &(page)->flags) - #define PageSlab(page) test_bit(PG_slab, &(page)->flags) #define SetPageSlab(page) set_bit(PG_slab, &(page)->flags) #define ClearPageSlab(page) clear_bit(PG_slab, &(page)->flags) @@ -345,11 +339,6 @@ extern void __mod_page_state_offset(unsi #define SetPageUncached(page) set_bit(PG_uncached, &(page)->flags) #define ClearPageUncached(page) clear_bit(PG_uncached, &(page)->flags) -#define PageNew(page) test_bit(PG_new, &(page)->flags) -#define SetPageNew(page) set_bit(PG_new, &(page)->flags) -#define ClearPageNew(page) clear_bit(PG_new, &(page)->flags) -#define TestClearPageNew(page) test_and_clear_bit(PG_new, &(page)->flags) - struct page; /* forward declaration */ int test_clear_page_dirty(struct page *page); Index: linux-2.6-uml/mm/page_alloc.c =================================================================== --- linux-2.6-uml.orig/mm/page_alloc.c 2006-02-23 21:57:34.000000000 +0100 +++ linux-2.6-uml/mm/page_alloc.c 2006-02-23 21:59:40.000000000 +0100 @@ -148,7 +148,7 @@ static void bad_page(struct page *page) page->flags &= ~(1 << PG_lru | 1 << PG_private | 1 << PG_locked | - 1 << PG_active | + 1 << PG_reclaim1 | 1 << PG_dirty | 1 << PG_reclaim | 1 << PG_slab | @@ -356,7 +356,7 @@ static inline int free_pages_check(struc 1 << PG_lru | 1 << PG_private | 1 << PG_locked | - 1 << PG_active | + 1 << PG_reclaim1 | 1 << PG_reclaim | 1 << PG_slab | 1 << PG_swapcache | @@ -513,7 +513,7 @@ static int prep_new_page(struct page *pa 1 << PG_lru | 1 << PG_private | 1 << PG_locked | - 1 << PG_active | + 1 << PG_reclaim1 | 1 << PG_dirty | 1 << PG_reclaim | 1 << PG_slab | @@ -532,7 +532,7 @@ static int prep_new_page(struct page *pa page->flags &= ~(1 << PG_uptodate | 1 << PG_error | 1 << PG_referenced | 1 << PG_arch_1 | 1 << PG_checked | 1 << PG_mappedtodisk | - 1 << PG_new); + 1 << PG_reclaim2); set_page_private(page, 0); set_page_refs(page, order); kernel_map_pages(page, 1 << order, 1);