Line data Source code
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 nr); 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 nr) 35 : { 36 : if (static_branch_unlikely(&page_owner_inited)) 37 : __split_page_owner(page, nr); 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 192995 : static inline void set_page_owner(struct page *page, 59 : unsigned int order, gfp_t gfp_mask) 60 : { 61 192995 : } 62 12 : static inline void split_page_owner(struct page *page, 63 : unsigned int order) 64 : { 65 12 : } 66 0 : static inline void copy_page_owner(struct page *oldpage, struct page *newpage) 67 : { 68 0 : } 69 : static inline void set_page_owner_migrate_reason(struct page *page, int reason) 70 : { 71 : } 72 0 : static inline void dump_page_owner(struct page *page) 73 : { 74 0 : } 75 : #endif /* CONFIG_PAGE_OWNER */ 76 : #endif /* __LINUX_PAGE_OWNER_H */