Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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