diff options
author | Mel Gorman <mel@csn.ul.ie> | 2011-01-13 18:45:43 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 20:32:31 -0500 |
commit | b44129b30652c8771db2265939bb8b463724043d (patch) | |
tree | d5b669ff4faea020b03e894706f49d5d1ae56907 /include/linux/vmstat.h | |
parent | 88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97 (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.h | 10 |
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); | |||
254 | extern void __dec_zone_state(struct zone *, enum zone_stat_item); | 254 | extern void __dec_zone_state(struct zone *, enum zone_stat_item); |
255 | 255 | ||
256 | void refresh_cpu_vm_stats(int); | 256 | void refresh_cpu_vm_stats(int); |
257 | void reduce_pgdat_percpu_threshold(pg_data_t *pgdat); | 257 | |
258 | void restore_pgdat_percpu_threshold(pg_data_t *pgdat); | 258 | int calculate_pressure_threshold(struct zone *zone); |
259 | int calculate_normal_threshold(struct zone *zone); | ||
260 | void 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 | ||
303 | static inline void reduce_pgdat_percpu_threshold(pg_data_t *pgdat) { } | 306 | #define set_pgdat_percpu_threshold(pgdat, callback) { } |
304 | static inline void restore_pgdat_percpu_threshold(pg_data_t *pgdat) { } | ||
305 | 307 | ||
306 | static inline void refresh_cpu_vm_stats(int cpu) { } | 308 | static inline void refresh_cpu_vm_stats(int cpu) { } |
307 | #endif | 309 | #endif |