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, int old_order, 15 int new_order); 16extern void __folio_copy_owner(struct folio *newfolio, struct folio *old); 17extern void __set_page_owner_migrate_reason(struct page *page, int reason); 18extern void __dump_page_owner(const struct page *page); 19extern void pagetypeinfo_showmixedcount_print(struct seq_file *m, 20 pg_data_t *pgdat, struct zone *zone); 21 22static inline void reset_page_owner(struct page *page, unsigned short order) 23{ 24 if (static_branch_unlikely(&page_owner_inited)) 25 __reset_page_owner(page, order); 26} 27 28static inline void set_page_owner(struct page *page, 29 unsigned short order, gfp_t gfp_mask) 30{ 31 if (static_branch_unlikely(&page_owner_inited)) 32 __set_page_owner(page, order, gfp_mask); 33} 34 35static inline void split_page_owner(struct page *page, int old_order, 36 int new_order) 37{ 38 if (static_branch_unlikely(&page_owner_inited)) 39 __split_page_owner(page, old_order, new_order); 40} 41static inline void folio_copy_owner(struct folio *newfolio, struct folio *old) 42{ 43 if (static_branch_unlikely(&page_owner_inited)) 44 __folio_copy_owner(newfolio, old); 45} 46static inline void set_page_owner_migrate_reason(struct page *page, int reason) 47{ 48 if (static_branch_unlikely(&page_owner_inited)) 49 __set_page_owner_migrate_reason(page, reason); 50} 51static inline void dump_page_owner(const struct page *page) 52{ 53 if (static_branch_unlikely(&page_owner_inited)) 54 __dump_page_owner(page); 55} 56#else 57static inline void reset_page_owner(struct page *page, unsigned short order) 58{ 59} 60static inline void set_page_owner(struct page *page, 61 unsigned short order, gfp_t gfp_mask) 62{ 63} 64static inline void split_page_owner(struct page *page, int old_order, 65 int new_order) 66{ 67} 68static inline void folio_copy_owner(struct folio *newfolio, struct folio *folio) 69{ 70} 71static inline void set_page_owner_migrate_reason(struct page *page, int reason) 72{ 73} 74static inline void dump_page_owner(const struct page *page) 75{ 76} 77#endif /* CONFIG_PAGE_OWNER */ 78#endif /* __LINUX_PAGE_OWNER_H */ 79