mmzone.c 925 B

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