Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __LINUX_PAGE_OWNER_H
0003 #define __LINUX_PAGE_OWNER_H
0004 
0005 #include <linux/jump_label.h>
0006 
0007 #ifdef CONFIG_PAGE_OWNER
0008 extern struct static_key_false page_owner_inited;
0009 extern struct page_ext_operations page_owner_ops;
0010 
0011 extern void __reset_page_owner(struct page *page, unsigned short order);
0012 extern void __set_page_owner(struct page *page,
0013             unsigned short order, gfp_t gfp_mask);
0014 extern void __split_page_owner(struct page *page, unsigned int nr);
0015 extern void __folio_copy_owner(struct folio *newfolio, struct folio *old);
0016 extern void __set_page_owner_migrate_reason(struct page *page, int reason);
0017 extern void __dump_page_owner(const struct page *page);
0018 extern void pagetypeinfo_showmixedcount_print(struct seq_file *m,
0019                     pg_data_t *pgdat, struct zone *zone);
0020 
0021 static inline void reset_page_owner(struct page *page, unsigned short order)
0022 {
0023     if (static_branch_unlikely(&page_owner_inited))
0024         __reset_page_owner(page, order);
0025 }
0026 
0027 static inline void set_page_owner(struct page *page,
0028             unsigned short order, gfp_t gfp_mask)
0029 {
0030     if (static_branch_unlikely(&page_owner_inited))
0031         __set_page_owner(page, order, gfp_mask);
0032 }
0033 
0034 static inline void split_page_owner(struct page *page, unsigned int nr)
0035 {
0036     if (static_branch_unlikely(&page_owner_inited))
0037         __split_page_owner(page, nr);
0038 }
0039 static inline void folio_copy_owner(struct folio *newfolio, struct folio *old)
0040 {
0041     if (static_branch_unlikely(&page_owner_inited))
0042         __folio_copy_owner(newfolio, old);
0043 }
0044 static inline void set_page_owner_migrate_reason(struct page *page, int reason)
0045 {
0046     if (static_branch_unlikely(&page_owner_inited))
0047         __set_page_owner_migrate_reason(page, reason);
0048 }
0049 static inline void dump_page_owner(const struct page *page)
0050 {
0051     if (static_branch_unlikely(&page_owner_inited))
0052         __dump_page_owner(page);
0053 }
0054 #else
0055 static inline void reset_page_owner(struct page *page, unsigned short order)
0056 {
0057 }
0058 static inline void set_page_owner(struct page *page,
0059             unsigned int order, gfp_t gfp_mask)
0060 {
0061 }
0062 static inline void split_page_owner(struct page *page,
0063             unsigned short order)
0064 {
0065 }
0066 static inline void folio_copy_owner(struct folio *newfolio, struct folio *folio)
0067 {
0068 }
0069 static inline void set_page_owner_migrate_reason(struct page *page, int reason)
0070 {
0071 }
0072 static inline void dump_page_owner(const struct page *page)
0073 {
0074 }
0075 #endif /* CONFIG_PAGE_OWNER */
0076 #endif /* __LINUX_PAGE_OWNER_H */