1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _TOOLS_MMZONE_H 3 #define _TOOLS_MMZONE_H 4 5 #include <linux/atomic.h> 6 7 struct pglist_data *first_online_pgdat(void); 8 struct pglist_data *next_online_pgdat(struct pglist_data *pgdat); 9 10 #define for_each_online_pgdat(pgdat) \ 11 for (pgdat = first_online_pgdat(); \ 12 pgdat; \ 13 pgdat = next_online_pgdat(pgdat)) 14 15 enum zone_type { 16 __MAX_NR_ZONES 17 }; 18 19 #define MAX_NR_ZONES __MAX_NR_ZONES 20 #define MAX_ORDER 11 21 #define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1)) 22 23 #define pageblock_order (MAX_ORDER - 1) 24 #define pageblock_nr_pages BIT(pageblock_order) 25 #define pageblock_align(pfn) ALIGN((pfn), pageblock_nr_pages) 26 #define pageblock_start_pfn(pfn) ALIGN_DOWN((pfn), pageblock_nr_pages) 27 28 struct zone { 29 atomic_long_t managed_pages; 30 }; 31 32 typedef struct pglist_data { 33 struct zone node_zones[MAX_NR_ZONES]; 34 35 } pg_data_t; 36 37 #endif 38