aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mmzone.h
diff options
context:
space:
mode:
authorMel Gorman <mel@csn.ul.ie>2009-06-16 18:32:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-16 22:47:35 -0400
commit418589663d6011de9006425b6c5721e1544fb47a (patch)
treeef37fb026d3e38191d6b5c99bc95c190fa98d0fb /include/linux/mmzone.h
parenta3af9c389a7f3e675313f442fdd8c247c1cdb66b (diff)
page allocator: use allocation flags as an index to the zone watermark
ALLOC_WMARK_MIN, ALLOC_WMARK_LOW and ALLOC_WMARK_HIGH determin whether pages_min, pages_low or pages_high is used as the zone watermark when allocating the pages. Two branches in the allocator hotpath determine which watermark to use. This patch uses the flags as an array index into a watermark array that is indexed with WMARK_* defines accessed via helpers. All call sites that use zone->pages_* are updated to use the helpers for accessing the values and the array offsets for setting. Signed-off-by: Mel Gorman <mel@csn.ul.ie> Reviewed-by: Christoph Lameter <cl@linux-foundation.org> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: Dave Hansen <dave@linux.vnet.ibm.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/mmzone.h')
-rw-r--r--include/linux/mmzone.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 0aa4445b0b8..dd8487f0442 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -163,6 +163,17 @@ static inline int is_unevictable_lru(enum lru_list l)
163#endif 163#endif
164} 164}
165 165
166enum zone_watermarks {
167 WMARK_MIN,
168 WMARK_LOW,
169 WMARK_HIGH,
170 NR_WMARK
171};
172
173#define min_wmark_pages(z) (z->watermark[WMARK_MIN])
174#define low_wmark_pages(z) (z->watermark[WMARK_LOW])
175#define high_wmark_pages(z) (z->watermark[WMARK_HIGH])
176
166struct per_cpu_pages { 177struct per_cpu_pages {
167 int count; /* number of pages in the list */ 178 int count; /* number of pages in the list */
168 int high; /* high watermark, emptying needed */ 179 int high; /* high watermark, emptying needed */
@@ -275,7 +286,10 @@ struct zone_reclaim_stat {
275 286
276struct zone { 287struct zone {
277 /* Fields commonly accessed by the page allocator */ 288 /* Fields commonly accessed by the page allocator */
278 unsigned long pages_min, pages_low, pages_high; 289
290 /* zone watermarks, access with *_wmark_pages(zone) macros */
291 unsigned long watermark[NR_WMARK];
292
279 /* 293 /*
280 * We don't know if the memory that we're going to allocate will be freeable 294 * We don't know if the memory that we're going to allocate will be freeable
281 * or/and it will be released eventually, so to avoid totally wasting several 295 * or/and it will be released eventually, so to avoid totally wasting several