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