1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _TOOLS_MMZONE_H 3#define _TOOLS_MMZONE_H 4 5#include <linux/atomic.h> 6 7struct pglist_data *first_online_pgdat(void); 8struct 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 15enum zone_type { 16 __MAX_NR_ZONES 17}; 18 19#define MAX_NR_ZONES __MAX_NR_ZONES 20#define MAX_PAGE_ORDER 10 21#define MAX_ORDER_NR_PAGES (1 << MAX_PAGE_ORDER) 22 23#define pageblock_order MAX_PAGE_ORDER 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 28struct zone { 29 atomic_long_t managed_pages; 30}; 31 32typedef struct pglist_data { 33 struct zone node_zones[MAX_NR_ZONES]; 34 35} pg_data_t; 36 37#endif 38