[PATCH 16/34] mm: page-replace-init.patch

From: Peter Zijlstra
Date: Wed Mar 22 2006 - 17:32:23 EST



From: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>

Move initialization of the replacement policy's variables into the
implementation.

API:

initialize the implementation's per zone variables

void page_replace_init_zone(struct zone *);

Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Signed-off-by: Marcelo Tosatti <marcelo.tosatti@xxxxxxxxxxxx>

---

include/linux/mm_page_replace.h | 2 ++
init/main.c | 2 ++
mm/useonce.c | 15 +++++++++++++++
mm/page_alloc.c | 8 ++------
4 files changed, 21 insertions(+), 6 deletions(-)

Index: linux-2.6/include/linux/mm_page_replace.h
===================================================================
--- linux-2.6.orig/include/linux/mm_page_replace.h 2006-03-13 20:37:39.000000000 +0100
+++ linux-2.6/include/linux/mm_page_replace.h 2006-03-13 20:37:40.000000000 +0100
@@ -67,6 +67,8 @@ struct scan_control {
#define prefetchw_prev_lru_page(_page, _base, _field) do { } while (0)
#endif

+extern void page_replace_init(void);
+extern void page_replace_init_zone(struct zone *);
/* void page_replace_hint_active(struct page *); */
/* void page_replace_hint_use_once(struct page *); */
extern void fastcall page_replace_add(struct page *);
Index: linux-2.6/mm/useonce.c
===================================================================
--- linux-2.6.orig/mm/useonce.c 2006-03-13 20:37:38.000000000 +0100
+++ linux-2.6/mm/useonce.c 2006-03-13 20:37:40.000000000 +0100
@@ -6,6 +6,21 @@
#include <linux/buffer_head.h> /* for try_to_release_page(),
buffer_heads_over_limit */

+void __init page_replace_init(void)
+{
+ /* empty hook */
+}
+
+void __init page_replace_init_zone(struct zone *zone)
+{
+ INIT_LIST_HEAD(&zone->active_list);
+ INIT_LIST_HEAD(&zone->inactive_list);
+ zone->nr_scan_active = 0;
+ zone->nr_scan_inactive = 0;
+ zone->nr_active = 0;
+ zone->nr_inactive = 0;
+}
+
static inline void
add_page_to_inactive_list(struct zone *zone, struct page *page)
{
Index: linux-2.6/mm/page_alloc.c
===================================================================
--- linux-2.6.orig/mm/page_alloc.c 2006-03-13 20:37:05.000000000 +0100
+++ linux-2.6/mm/page_alloc.c 2006-03-13 20:37:40.000000000 +0100
@@ -37,6 +37,7 @@
#include <linux/nodemask.h>
#include <linux/vmalloc.h>
#include <linux/mempolicy.h>
+#include <linux/mm_page_replace.h>

#include <asm/tlbflush.h>
#include "internal.h"
@@ -2075,12 +2076,7 @@ static void __init free_area_init_core(s
zone->temp_priority = zone->prev_priority = DEF_PRIORITY;

zone_pcp_init(zone);
- INIT_LIST_HEAD(&zone->active_list);
- INIT_LIST_HEAD(&zone->inactive_list);
- zone->nr_scan_active = 0;
- zone->nr_scan_inactive = 0;
- zone->nr_active = 0;
- zone->nr_inactive = 0;
+ page_replace_init_zone(zone);
atomic_set(&zone->reclaim_in_progress, 0);
if (!size)
continue;
Index: linux-2.6/init/main.c
===================================================================
--- linux-2.6.orig/init/main.c 2006-03-13 20:37:05.000000000 +0100
+++ linux-2.6/init/main.c 2006-03-13 20:37:40.000000000 +0100
@@ -47,6 +47,7 @@
#include <linux/rmap.h>
#include <linux/mempolicy.h>
#include <linux/key.h>
+#include <linux/mm_page_replace.h>

#include <asm/io.h>
#include <asm/bugs.h>
@@ -507,6 +508,7 @@ asmlinkage void __init start_kernel(void
#endif
vfs_caches_init_early();
cpuset_init_early();
+ page_replace_init();
mem_init();
kmem_cache_init();
setup_per_cpu_pageset();
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/