diff options
Diffstat (limited to 'include/linux/page-flags.h')
-rw-r--r-- | include/linux/page-flags.h | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 32d09c8d952b..dede8d412dca 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -144,22 +144,33 @@ struct page_state { | |||
144 | extern void get_page_state(struct page_state *ret); | 144 | extern void get_page_state(struct page_state *ret); |
145 | extern void get_page_state_node(struct page_state *ret, int node); | 145 | extern void get_page_state_node(struct page_state *ret, int node); |
146 | extern void get_full_page_state(struct page_state *ret); | 146 | extern void get_full_page_state(struct page_state *ret); |
147 | extern unsigned long __read_page_state(unsigned long offset); | 147 | extern unsigned long read_page_state_offset(unsigned long offset); |
148 | extern void __mod_page_state(unsigned long offset, unsigned long delta); | 148 | extern void mod_page_state_offset(unsigned long offset, unsigned long delta); |
149 | extern void __mod_page_state_offset(unsigned long offset, unsigned long delta); | ||
149 | 150 | ||
150 | #define read_page_state(member) \ | 151 | #define read_page_state(member) \ |
151 | __read_page_state(offsetof(struct page_state, member)) | 152 | read_page_state_offset(offsetof(struct page_state, member)) |
152 | 153 | ||
153 | #define mod_page_state(member, delta) \ | 154 | #define mod_page_state(member, delta) \ |
154 | __mod_page_state(offsetof(struct page_state, member), (delta)) | 155 | mod_page_state_offset(offsetof(struct page_state, member), (delta)) |
155 | 156 | ||
156 | #define inc_page_state(member) mod_page_state(member, 1UL) | 157 | #define __mod_page_state(member, delta) \ |
157 | #define dec_page_state(member) mod_page_state(member, 0UL - 1) | 158 | __mod_page_state_offset(offsetof(struct page_state, member), (delta)) |
158 | #define add_page_state(member,delta) mod_page_state(member, (delta)) | ||
159 | #define sub_page_state(member,delta) mod_page_state(member, 0UL - (delta)) | ||
160 | 159 | ||
161 | #define mod_page_state_zone(zone, member, delta) \ | 160 | #define inc_page_state(member) mod_page_state(member, 1UL) |
162 | do { \ | 161 | #define dec_page_state(member) mod_page_state(member, 0UL - 1) |
162 | #define add_page_state(member,delta) mod_page_state(member, (delta)) | ||
163 | #define sub_page_state(member,delta) mod_page_state(member, 0UL - (delta)) | ||
164 | |||
165 | #define __inc_page_state(member) __mod_page_state(member, 1UL) | ||
166 | #define __dec_page_state(member) __mod_page_state(member, 0UL - 1) | ||
167 | #define __add_page_state(member,delta) __mod_page_state(member, (delta)) | ||
168 | #define __sub_page_state(member,delta) __mod_page_state(member, 0UL - (delta)) | ||
169 | |||
170 | #define page_state(member) (*__page_state(offsetof(struct page_state, member))) | ||
171 | |||
172 | #define state_zone_offset(zone, member) \ | ||
173 | ({ \ | ||
163 | unsigned offset; \ | 174 | unsigned offset; \ |
164 | if (is_highmem(zone)) \ | 175 | if (is_highmem(zone)) \ |
165 | offset = offsetof(struct page_state, member##_high); \ | 176 | offset = offsetof(struct page_state, member##_high); \ |
@@ -169,7 +180,17 @@ extern void __mod_page_state(unsigned long offset, unsigned long delta); | |||
169 | offset = offsetof(struct page_state, member##_dma32); \ | 180 | offset = offsetof(struct page_state, member##_dma32); \ |
170 | else \ | 181 | else \ |
171 | offset = offsetof(struct page_state, member##_dma); \ | 182 | offset = offsetof(struct page_state, member##_dma); \ |
172 | __mod_page_state(offset, (delta)); \ | 183 | offset; \ |
184 | }) | ||
185 | |||
186 | #define __mod_page_state_zone(zone, member, delta) \ | ||
187 | do { \ | ||
188 | __mod_page_state_offset(state_zone_offset(zone, member), (delta)); \ | ||
189 | } while (0) | ||
190 | |||
191 | #define mod_page_state_zone(zone, member, delta) \ | ||
192 | do { \ | ||
193 | mod_page_state_offset(state_zone_offset(zone, member), (delta)); \ | ||
173 | } while (0) | 194 | } while (0) |
174 | 195 | ||
175 | /* | 196 | /* |