Commit | Line | Data |
---|---|---|
eefa864b JK |
1 | #ifndef __LINUX_PAGE_EXT_H |
2 | #define __LINUX_PAGE_EXT_H | |
3 | ||
4 | struct pglist_data; | |
5 | struct page_ext_operations { | |
6 | bool (*need)(void); | |
7 | void (*init)(void); | |
8 | }; | |
9 | ||
10 | #ifdef CONFIG_PAGE_EXTENSION | |
11 | ||
12 | /* | |
13 | * Page Extension can be considered as an extended mem_map. | |
14 | * A page_ext page is associated with every page descriptor. The | |
15 | * page_ext helps us add more information about the page. | |
16 | * All page_ext are allocated at boot or memory hotplug event, | |
17 | * then the page_ext for pfn always exists. | |
18 | */ | |
19 | struct page_ext { | |
20 | unsigned long flags; | |
21 | }; | |
22 | ||
23 | extern void pgdat_page_ext_init(struct pglist_data *pgdat); | |
24 | ||
25 | #ifdef CONFIG_SPARSEMEM | |
26 | static inline void page_ext_init_flatmem(void) | |
27 | { | |
28 | } | |
29 | extern void page_ext_init(void); | |
30 | #else | |
31 | extern void page_ext_init_flatmem(void); | |
32 | static inline void page_ext_init(void) | |
33 | { | |
34 | } | |
35 | #endif | |
36 | ||
37 | struct page_ext *lookup_page_ext(struct page *page); | |
38 | ||
39 | #else /* !CONFIG_PAGE_EXTENSION */ | |
40 | struct page_ext; | |
41 | ||
42 | static inline void pgdat_page_ext_init(struct pglist_data *pgdat) | |
43 | { | |
44 | } | |
45 | ||
46 | static inline struct page_ext *lookup_page_ext(struct page *page) | |
47 | { | |
48 | return NULL; | |
49 | } | |
50 | ||
51 | static inline void page_ext_init(void) | |
52 | { | |
53 | } | |
54 | ||
55 | static inline void page_ext_init_flatmem(void) | |
56 | { | |
57 | } | |
58 | #endif /* CONFIG_PAGE_EXTENSION */ | |
59 | #endif /* __LINUX_PAGE_EXT_H */ |