1 /* 2 * linux/mm/mmzone.c 3 * 4 * management codes for pgdats and zones. 5 */ 6 7 8 #include <linux/stddef.h> 9 #include <linux/mmzone.h> 10 #include <linux/module.h> 11 12 struct pglist_data *first_online_pgdat(void) 13 { 14 return NODE_DATA(first_online_node); 15 } 16 17 EXPORT_UNUSED_SYMBOL(first_online_pgdat); /* June 2006 */ 18 19 struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) 20 { 21 int nid = next_online_node(pgdat->node_id); 22 23 if (nid == MAX_NUMNODES) 24 return NULL; 25 return NODE_DATA(nid); 26 } 27 EXPORT_UNUSED_SYMBOL(next_online_pgdat); /* June 2006 */ 28 29 30 /* 31 * next_zone - helper magic for for_each_zone() 32 */ 33 struct zone *next_zone(struct zone *zone) 34 { 35 pg_data_t *pgdat = zone->zone_pgdat; 36 37 if (zone < pgdat->node_zones + MAX_NR_ZONES - 1) 38 zone++; 39 else { 40 pgdat = next_online_pgdat(pgdat); 41 if (pgdat) 42 zone = pgdat->node_zones; 43 else 44 zone = NULL; 45 } 46 return zone; 47 } 48 EXPORT_UNUSED_SYMBOL(next_zone); /* June 2006 */ 49 50