page_owner.h (2373B)
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 8extern struct static_key_false page_owner_inited; 9extern struct page_ext_operations page_owner_ops; 10 11extern void __reset_page_owner(struct page *page, unsigned short order); 12extern void __set_page_owner(struct page *page, 13 unsigned short order, gfp_t gfp_mask); 14extern void __split_page_owner(struct page *page, unsigned int nr); 15extern void __folio_copy_owner(struct folio *newfolio, struct folio *old); 16extern void __set_page_owner_migrate_reason(struct page *page, int reason); 17extern void __dump_page_owner(const struct page *page); 18extern void pagetypeinfo_showmixedcount_print(struct seq_file *m, 19 pg_data_t *pgdat, struct zone *zone); 20 21static inline void reset_page_owner(struct page *page, unsigned short order) 22{ 23 if (static_branch_unlikely(&page_owner_inited)) 24 __reset_page_owner(page, order); 25} 26 27static inline void set_page_owner(struct page *page, 28 unsigned short order, gfp_t gfp_mask) 29{ 30 if (static_branch_unlikely(&page_owner_inited)) 31 __set_page_owner(page, order, gfp_mask); 32} 33 34static 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} 39static inline void folio_copy_owner(struct folio *newfolio, struct folio *old) 40{ 41 if (static_branch_unlikely(&page_owner_inited)) 42 __folio_copy_owner(newfolio, old); 43} 44static 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} 49static inline void dump_page_owner(const struct page *page) 50{ 51 if (static_branch_unlikely(&page_owner_inited)) 52 __dump_page_owner(page); 53} 54#else 55static inline void reset_page_owner(struct page *page, unsigned short order) 56{ 57} 58static inline void set_page_owner(struct page *page, 59 unsigned int order, gfp_t gfp_mask) 60{ 61} 62static inline void split_page_owner(struct page *page, 63 unsigned short order) 64{ 65} 66static inline void folio_copy_owner(struct folio *newfolio, struct folio *folio) 67{ 68} 69static inline void set_page_owner_migrate_reason(struct page *page, int reason) 70{ 71} 72static inline void dump_page_owner(const struct page *page) 73{ 74} 75#endif /* CONFIG_PAGE_OWNER */ 76#endif /* __LINUX_PAGE_OWNER_H */