aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/vmstat.h
diff options
context:
space:
mode:
authorMel Gorman <mel@csn.ul.ie>2011-01-13 18:45:43 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 20:32:31 -0500
commitb44129b30652c8771db2265939bb8b463724043d (patch)
treed5b669ff4faea020b03e894706f49d5d1ae56907 /include/linux/vmstat.h
parent88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97 (diff)
mm: vmstat: use a single setter function and callback for adjusting percpu thresholds
reduce_pgdat_percpu_threshold() and restore_pgdat_percpu_threshold() exist to adjust the per-cpu vmstat thresholds while kswapd is awake to avoid errors due to counter drift. The functions duplicate some code so this patch replaces them with a single set_pgdat_percpu_threshold() that takes a callback function to calculate the desired threshold as a parameter. [akpm@linux-foundation.org: readability tweak] [kosaki.motohiro@jp.fujitsu.com: set_pgdat_percpu_threshold(): don't use for_each_online_cpu] Signed-off-by: Mel Gorman <mel@csn.ul.ie> Reviewed-by: Christoph Lameter <cl@linux.com> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/vmstat.h')
-rw-r--r--include/linux/vmstat.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index e4cc21cf5870..833e676d6d92 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -254,8 +254,11 @@ extern void dec_zone_state(struct zone *, enum zone_stat_item);
254extern void __dec_zone_state(struct zone *, enum zone_stat_item); 254extern void __dec_zone_state(struct zone *, enum zone_stat_item);
255 255
256void refresh_cpu_vm_stats(int); 256void refresh_cpu_vm_stats(int);
257void reduce_pgdat_percpu_threshold(pg_data_t *pgdat); 257
258void restore_pgdat_percpu_threshold(pg_data_t *pgdat); 258int calculate_pressure_threshold(struct zone *zone);
259int calculate_normal_threshold(struct zone *zone);
260void set_pgdat_percpu_threshold(pg_data_t *pgdat,
261 int (*calculate_pressure)(struct zone *));
259#else /* CONFIG_SMP */ 262#else /* CONFIG_SMP */
260 263
261/* 264/*
@@ -300,8 +303,7 @@ static inline void __dec_zone_page_state(struct page *page,
300#define dec_zone_page_state __dec_zone_page_state 303#define dec_zone_page_state __dec_zone_page_state
301#define mod_zone_page_state __mod_zone_page_state 304#define mod_zone_page_state __mod_zone_page_state
302 305
303static inline void reduce_pgdat_percpu_threshold(pg_data_t *pgdat) { } 306#define set_pgdat_percpu_threshold(pgdat, callback) { }
304static inline void restore_pgdat_percpu_threshold(pg_data_t *pgdat) { }
305 307
306static inline void refresh_cpu_vm_stats(int cpu) { } 308static inline void refresh_cpu_vm_stats(int cpu) { }
307#endif 309#endif