1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __LINUX_PAGE_OWNER_H
3 #define __LINUX_PAGE_OWNER_H
5 #include <linux/jump_label.h>
7 #ifdef CONFIG_PAGE_OWNER
8 extern struct static_key_false page_owner_inited
;
9 extern struct page_ext_operations page_owner_ops
;
11 extern void __reset_page_owner(struct page
*page
, unsigned short order
);
12 extern void __set_page_owner(struct page
*page
,
13 unsigned short order
, gfp_t gfp_mask
);
14 extern void __split_page_owner(struct page
*page
, int old_order
,
16 extern void __folio_copy_owner(struct folio
*newfolio
, struct folio
*old
);
17 extern void __set_page_owner_migrate_reason(struct page
*page
, int reason
);
18 extern void __dump_page_owner(const struct page
*page
);
19 extern void pagetypeinfo_showmixedcount_print(struct seq_file
*m
,
20 pg_data_t
*pgdat
, struct zone
*zone
);
22 static inline void reset_page_owner(struct page
*page
, unsigned short order
)
24 if (static_branch_unlikely(&page_owner_inited
))
25 __reset_page_owner(page
, order
);
28 static inline void set_page_owner(struct page
*page
,
29 unsigned short order
, gfp_t gfp_mask
)
31 if (static_branch_unlikely(&page_owner_inited
))
32 __set_page_owner(page
, order
, gfp_mask
);
35 static inline void split_page_owner(struct page
*page
, int old_order
,
38 if (static_branch_unlikely(&page_owner_inited
))
39 __split_page_owner(page
, old_order
, new_order
);
41 static inline void folio_copy_owner(struct folio
*newfolio
, struct folio
*old
)
43 if (static_branch_unlikely(&page_owner_inited
))
44 __folio_copy_owner(newfolio
, old
);
46 static inline void set_page_owner_migrate_reason(struct page
*page
, int reason
)
48 if (static_branch_unlikely(&page_owner_inited
))
49 __set_page_owner_migrate_reason(page
, reason
);
51 static inline void dump_page_owner(const struct page
*page
)
53 if (static_branch_unlikely(&page_owner_inited
))
54 __dump_page_owner(page
);
57 static inline void reset_page_owner(struct page
*page
, unsigned short order
)
60 static inline void set_page_owner(struct page
*page
,
61 unsigned short order
, gfp_t gfp_mask
)
64 static inline void split_page_owner(struct page
*page
, int old_order
,
68 static inline void folio_copy_owner(struct folio
*newfolio
, struct folio
*folio
)
71 static inline void set_page_owner_migrate_reason(struct page
*page
, int reason
)
74 static inline void dump_page_owner(const struct page
*page
)
77 #endif /* CONFIG_PAGE_OWNER */
78 #endif /* __LINUX_PAGE_OWNER_H */