1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __LINUX_PAGE_OWNER_H 3 #define __LINUX_PAGE_OWNER_H 4 5 #include <linux/jump_label.h> 6 7 #ifdef CONFIG_PAGE_OWNER 8 extern struct static_key_false page_owner_inited; 9 extern struct page_ext_operations page_owner_ops; 10 11 extern void __reset_page_owner(struct page *page, unsigned int order); 12 extern void __set_page_owner(struct page *page, 13 unsigned int order, gfp_t gfp_mask); 14 extern void __split_page_owner(struct page *page, unsigned int order); 15 extern void __copy_page_owner(struct page *oldpage, struct page *newpage); 16 extern void __set_page_owner_migrate_reason(struct page *page, int reason); 17 extern void __dump_page_owner(struct page *page); 18 extern void pagetypeinfo_showmixedcount_print(struct seq_file *m, 19 pg_data_t *pgdat, struct zone *zone); 20 21 static inline void reset_page_owner(struct page *page, unsigned int order) 22 { 23 if (static_branch_unlikely(&page_owner_inited)) 24 __reset_page_owner(page, order); 25 } 26 27 static inline void set_page_owner(struct page *page, 28 unsigned int order, gfp_t gfp_mask) 29 { 30 if (static_branch_unlikely(&page_owner_inited)) 31 __set_page_owner(page, order, gfp_mask); 32 } 33 34 static inline void split_page_owner(struct page *page, unsigned int order) 35 { 36 if (static_branch_unlikely(&page_owner_inited)) 37 __split_page_owner(page, order); 38 } 39 static inline void copy_page_owner(struct page *oldpage, struct page *newpage) 40 { 41 if (static_branch_unlikely(&page_owner_inited)) 42 __copy_page_owner(oldpage, newpage); 43 } 44 static inline void set_page_owner_migrate_reason(struct page *page, int reason) 45 { 46 if (static_branch_unlikely(&page_owner_inited)) 47 __set_page_owner_migrate_reason(page, reason); 48 } 49 static inline void dump_page_owner(struct page *page) 50 { 51 if (static_branch_unlikely(&page_owner_inited)) 52 __dump_page_owner(page); 53 } 54 #else 55 static inline void reset_page_owner(struct page *page, unsigned int order) 56 { 57 } 58 static inline void set_page_owner(struct page *page, 59 unsigned int order, gfp_t gfp_mask) 60 { 61 } 62 static inline void split_page_owner(struct page *page, 63 unsigned int order) 64 { 65 } 66 static inline void copy_page_owner(struct page *oldpage, struct page *newpage) 67 { 68 } 69 static inline void set_page_owner_migrate_reason(struct page *page, int reason) 70 { 71 } 72 static inline void dump_page_owner(struct page *page) 73 { 74 } 75 #endif /* CONFIG_PAGE_OWNER */ 76 #endif /* __LINUX_PAGE_OWNER_H */ 77