]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
include/linux/mmzone.h: cleanups
authorAndrew Morton <akpm@linux-foundation.org>
Thu, 23 May 2013 00:37:21 +0000 (10:37 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 27 May 2013 06:09:06 +0000 (16:09 +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 e511f9429f1e3813a15864256c5813c27524a107..a9296055976bfb0da39961a159af688e098f8d56 100644 (file)
@@ -835,7 +835,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)
 {
@@ -877,10 +880,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