static int zone_balance_max[MAX_NR_ZONES] __initdata = { 255 , 255, 255, };
/*
- * Temporary debugging check.
+ * Temporary debugging check for pages not lying within a given zone.
*/
-#define BAD_RANGE(zone, page) \
-( \
- (((page) - mem_map) >= ((zone)->zone_start_mapnr+(zone)->size)) \
- || (((page) - mem_map) < (zone)->zone_start_mapnr) \
- || ((zone) != page_zone(page)) \
-)
+static inline int bad_range(zone_t *zone, struct page *page)
+{
+ if (page - mem_map >= zone->zone_start_mapnr + zone->size)
+ return 1;
+ if (page - mem_map < zone->zone_start_mapnr)
+ return 1;
+ if (zone != page_zone(page))
+ return 1;
+ return 0;
+}
/*
* Freeing function for a buddy system allocator.
*/
buddy1 = base + (page_idx ^ -mask);
buddy2 = base + page_idx;
- if (BAD_RANGE(zone,buddy1))
+ if (bad_range(zone, buddy1))
BUG();
- if (BAD_RANGE(zone,buddy2))
+ if (bad_range(zone, buddy2))
BUG();
list_del(&buddy1->list);
unsigned long size = 1 << high;
while (high > low) {
- if (BAD_RANGE(zone,page))
+ if (bad_range(zone, page))
BUG();
area--;
high--;
index += size;
page += size;
}
- if (BAD_RANGE(zone,page))
+ if (bad_range(zone, page))
BUG();
return page;
}
unsigned int index;
page = list_entry(curr, struct page, list);
- if (BAD_RANGE(zone,page))
+ if (bad_range(zone, page))
BUG();
list_del(curr);
index = page - zone->zone_mem_map;
spin_unlock_irqrestore(&zone->lock, flags);
set_page_count(page, 1);
- if (BAD_RANGE(zone,page))
+ if (bad_range(zone, page))
BUG();
if (PageLRU(page))
BUG();