]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
include/linux/mmzone.h: cleanups
authorAndrew Morton <akpm@linux-foundation.org>
Wed, 19 Jun 2013 00:07:03 +0000 (10:07 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 19 Jun 2013 07:26:55 +0000 (17:26 +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 af4a3b77a8decfce07e5129f2e932d41fa7271c0..d5e2bc5ad62626ae8a955280446377127ca94310 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)
 {
@@ -878,10 +881,10 @@ static inline int is_highmem_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