Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
48c96a36 JK |
2 | #ifndef __LINUX_PAGE_OWNER_H |
3 | #define __LINUX_PAGE_OWNER_H | |
4 | ||
7dd80b8a VB |
5 | #include <linux/jump_label.h> |
6 | ||
48c96a36 | 7 | #ifdef CONFIG_PAGE_OWNER |
7dd80b8a | 8 | extern struct static_key_false page_owner_inited; |
48c96a36 JK |
9 | extern struct page_ext_operations page_owner_ops; |
10 | ||
0093de69 | 11 | extern void __reset_page_owner(struct page *page, unsigned short order); |
48c96a36 | 12 | extern void __set_page_owner(struct page *page, |
0093de69 | 13 | unsigned short order, gfp_t gfp_mask); |
46d44d09 ZY |
14 | extern void __split_page_owner(struct page *page, int old_order, |
15 | int new_order); | |
19138349 | 16 | extern void __folio_copy_owner(struct folio *newfolio, struct folio *old); |
7cd12b4a | 17 | extern void __set_page_owner_migrate_reason(struct page *page, int reason); |
8bf6f451 | 18 | extern void __dump_page_owner(const struct page *page); |
e2f612e6 JK |
19 | extern void pagetypeinfo_showmixedcount_print(struct seq_file *m, |
20 | pg_data_t *pgdat, struct zone *zone); | |
48c96a36 | 21 | |
0093de69 | 22 | static inline void reset_page_owner(struct page *page, unsigned short order) |
48c96a36 | 23 | { |
7dd80b8a VB |
24 | if (static_branch_unlikely(&page_owner_inited)) |
25 | __reset_page_owner(page, order); | |
48c96a36 JK |
26 | } |
27 | ||
28 | static inline void set_page_owner(struct page *page, | |
0093de69 | 29 | unsigned short order, gfp_t gfp_mask) |
48c96a36 | 30 | { |
7dd80b8a VB |
31 | if (static_branch_unlikely(&page_owner_inited)) |
32 | __set_page_owner(page, order, gfp_mask); | |
48c96a36 | 33 | } |
e2cfc911 | 34 | |
46d44d09 ZY |
35 | static inline void split_page_owner(struct page *page, int old_order, |
36 | int new_order) | |
e2cfc911 | 37 | { |
7dd80b8a | 38 | if (static_branch_unlikely(&page_owner_inited)) |
46d44d09 | 39 | __split_page_owner(page, old_order, new_order); |
e2cfc911 | 40 | } |
19138349 | 41 | static inline void folio_copy_owner(struct folio *newfolio, struct folio *old) |
d435edca VB |
42 | { |
43 | if (static_branch_unlikely(&page_owner_inited)) | |
19138349 | 44 | __folio_copy_owner(newfolio, old); |
d435edca | 45 | } |
7cd12b4a VB |
46 | static 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 | } | |
8bf6f451 | 51 | static inline void dump_page_owner(const struct page *page) |
4e462112 VB |
52 | { |
53 | if (static_branch_unlikely(&page_owner_inited)) | |
54 | __dump_page_owner(page); | |
55 | } | |
48c96a36 | 56 | #else |
0093de69 | 57 | static inline void reset_page_owner(struct page *page, unsigned short order) |
48c96a36 JK |
58 | { |
59 | } | |
60 | static inline void set_page_owner(struct page *page, | |
46d44d09 | 61 | unsigned short order, gfp_t gfp_mask) |
48c96a36 JK |
62 | { |
63 | } | |
46d44d09 ZY |
64 | static inline void split_page_owner(struct page *page, int old_order, |
65 | int new_order) | |
e2cfc911 | 66 | { |
e2cfc911 | 67 | } |
19138349 | 68 | static inline void folio_copy_owner(struct folio *newfolio, struct folio *folio) |
d435edca VB |
69 | { |
70 | } | |
7cd12b4a VB |
71 | static inline void set_page_owner_migrate_reason(struct page *page, int reason) |
72 | { | |
73 | } | |
8bf6f451 | 74 | static inline void dump_page_owner(const struct page *page) |
4e462112 VB |
75 | { |
76 | } | |
48c96a36 JK |
77 | #endif /* CONFIG_PAGE_OWNER */ |
78 | #endif /* __LINUX_PAGE_OWNER_H */ |