hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/include/linux/page_idle.h
....@@ -6,7 +6,7 @@
66 #include <linux/page-flags.h>
77 #include <linux/page_ext.h>
88
9
-#ifdef CONFIG_IDLE_PAGE_TRACKING
9
+#ifdef CONFIG_PAGE_IDLE_FLAG
1010
1111 #ifdef CONFIG_64BIT
1212 static inline bool page_is_young(struct page *page)
....@@ -47,66 +47,81 @@
4747
4848 static inline bool page_is_young(struct page *page)
4949 {
50
- struct page_ext *page_ext = lookup_page_ext(page);
50
+ struct page_ext *page_ext = page_ext_get(page);
51
+ bool page_young;
5152
5253 if (unlikely(!page_ext))
5354 return false;
5455
55
- return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
56
+ page_young = test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
57
+ page_ext_put(page_ext);
58
+
59
+ return page_young;
5660 }
5761
5862 static inline void set_page_young(struct page *page)
5963 {
60
- struct page_ext *page_ext = lookup_page_ext(page);
64
+ struct page_ext *page_ext = page_ext_get(page);
6165
6266 if (unlikely(!page_ext))
6367 return;
6468
6569 set_bit(PAGE_EXT_YOUNG, &page_ext->flags);
70
+ page_ext_put(page_ext);
6671 }
6772
6873 static inline bool test_and_clear_page_young(struct page *page)
6974 {
70
- struct page_ext *page_ext = lookup_page_ext(page);
75
+ struct page_ext *page_ext = page_ext_get(page);
76
+ bool page_young;
7177
7278 if (unlikely(!page_ext))
7379 return false;
7480
75
- return test_and_clear_bit(PAGE_EXT_YOUNG, &page_ext->flags);
81
+ page_young = test_and_clear_bit(PAGE_EXT_YOUNG, &page_ext->flags);
82
+ page_ext_put(page_ext);
83
+
84
+ return page_young;
7685 }
7786
7887 static inline bool page_is_idle(struct page *page)
7988 {
80
- struct page_ext *page_ext = lookup_page_ext(page);
89
+ struct page_ext *page_ext = page_ext_get(page);
90
+ bool page_idle;
8191
8292 if (unlikely(!page_ext))
8393 return false;
8494
85
- return test_bit(PAGE_EXT_IDLE, &page_ext->flags);
95
+ page_idle = test_bit(PAGE_EXT_IDLE, &page_ext->flags);
96
+ page_ext_put(page_ext);
97
+
98
+ return page_idle;
8699 }
87100
88101 static inline void set_page_idle(struct page *page)
89102 {
90
- struct page_ext *page_ext = lookup_page_ext(page);
103
+ struct page_ext *page_ext = page_ext_get(page);
91104
92105 if (unlikely(!page_ext))
93106 return;
94107
95108 set_bit(PAGE_EXT_IDLE, &page_ext->flags);
109
+ page_ext_put(page_ext);
96110 }
97111
98112 static inline void clear_page_idle(struct page *page)
99113 {
100
- struct page_ext *page_ext = lookup_page_ext(page);
114
+ struct page_ext *page_ext = page_ext_get(page);
101115
102116 if (unlikely(!page_ext))
103117 return;
104118
105119 clear_bit(PAGE_EXT_IDLE, &page_ext->flags);
120
+ page_ext_put(page_ext);
106121 }
107122 #endif /* CONFIG_64BIT */
108123
109
-#else /* !CONFIG_IDLE_PAGE_TRACKING */
124
+#else /* !CONFIG_PAGE_IDLE_FLAG */
110125
111126 static inline bool page_is_young(struct page *page)
112127 {
....@@ -135,6 +150,6 @@
135150 {
136151 }
137152
138
-#endif /* CONFIG_IDLE_PAGE_TRACKING */
153
+#endif /* CONFIG_PAGE_IDLE_FLAG */
139154
140155 #endif /* _LINUX_MM_PAGE_IDLE_H */