mm/page_ext: resurrect struct page extending code for debugging
[deliverable/linux.git] / include / linux / page_ext.h
CommitLineData
eefa864b
JK
1#ifndef __LINUX_PAGE_EXT_H
2#define __LINUX_PAGE_EXT_H
3
4struct pglist_data;
5struct 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 */
19struct page_ext {
20 unsigned long flags;
21};
22
23extern void pgdat_page_ext_init(struct pglist_data *pgdat);
24
25#ifdef CONFIG_SPARSEMEM
26static inline void page_ext_init_flatmem(void)
27{
28}
29extern void page_ext_init(void);
30#else
31extern void page_ext_init_flatmem(void);
32static inline void page_ext_init(void)
33{
34}
35#endif
36
37struct page_ext *lookup_page_ext(struct page *page);
38
39#else /* !CONFIG_PAGE_EXTENSION */
40struct page_ext;
41
42static inline void pgdat_page_ext_init(struct pglist_data *pgdat)
43{
44}
45
46static inline struct page_ext *lookup_page_ext(struct page *page)
47{
48 return NULL;
49}
50
51static inline void page_ext_init(void)
52{
53}
54
55static inline void page_ext_init_flatmem(void)
56{
57}
58#endif /* CONFIG_PAGE_EXTENSION */
59#endif /* __LINUX_PAGE_EXT_H */
This page took 0.026311 seconds and 5 git commands to generate.