]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
include/linux/mmzone.h: cleanups
authorAndrew Morton <akpm@linux-foundation.org>
Fri, 7 Jun 2013 00:08:34 +0000 (10:08 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 7 Jun 2013 05:42:38 +0000 (15:42 +1000)
- implement zone_idx() in C to fix its references-args-twice macro bug

- use zone_idx() in is_highmem() to remove large amounts of silly fluff.

Cc: Lin Feng <linfeng@cn.fujitsu.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/mmzone.h

index ae19af5ec02c0c4dd6fe149d4d97f9ca8a37cb71..2588580d17557d617662bc1607dae370a17ebce1 100644 (file)
@@ -841,7 +841,10 @@ unsigned long __init node_memmap_size_bytes(int, unsigned long, unsigned long);
 /*
  * zone_idx() returns 0 for the ZONE_DMA zone, 1 for the ZONE_NORMAL zone, etc.
  */
-#define zone_idx(zone)         ((zone) - (zone)->zone_pgdat->node_zones)
+static inline enum zone_type zone_idx(struct zone *zone)
+{
+       return zone - zone->zone_pgdat->node_zones;
+}
 
 static inline int populated_zone(struct zone *zone)
 {
@@ -883,10 +886,10 @@ static inline int is_normal_idx(enum zone_type idx)
 static inline int is_highmem(struct zone *zone)
 {
 #ifdef CONFIG_HIGHMEM
-       int zone_off = (char *)zone - (char *)zone->zone_pgdat->node_zones;
-       return zone_off == ZONE_HIGHMEM * sizeof(*zone) ||
-              (zone_off == ZONE_MOVABLE * sizeof(*zone) &&
-               zone_movable_is_highmem());
+       enum zone_type idx = zone_idx(zone);
+
+       return idx == ZONE_HIGHMEM ||
+              (idx == ZONE_MOVABLE && zone_movable_is_highmem());
 #else
        return 0;
 #endif