aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/page-flags.h
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@insightbb.com>2007-05-08 01:31:11 -0400
committerDmitry Torokhov <dtor@insightbb.com>2007-05-08 01:31:11 -0400
commit334d0dd8b660557608142f0f77abc6812b48f08b (patch)
tree9393a9aa099d7d42deda5f9f5054796c0c769be7 /include/linux/page-flags.h
parent3f07d8796262f6aee135c8dd9a91210da9f888e4 (diff)
parent5b94f675f57e4ff16c8fda09088d7480a84dcd91 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'include/linux/page-flags.h')
-rw-r--r--include/linux/page-flags.h41
1 files changed, 29 insertions, 12 deletions
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 96326594e55d..ae2d79f2107e 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -6,6 +6,7 @@
6#define PAGE_FLAGS_H 6#define PAGE_FLAGS_H
7 7
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/mm_types.h>
9 10
10/* 11/*
11 * Various page->flags bits: 12 * Various page->flags bits:
@@ -82,13 +83,11 @@
82#define PG_private 11 /* If pagecache, has fs-private data */ 83#define PG_private 11 /* If pagecache, has fs-private data */
83 84
84#define PG_writeback 12 /* Page is under writeback */ 85#define PG_writeback 12 /* Page is under writeback */
85#define PG_nosave 13 /* Used for system suspend/resume */
86#define PG_compound 14 /* Part of a compound page */ 86#define PG_compound 14 /* Part of a compound page */
87#define PG_swapcache 15 /* Swap page: swp_entry_t in private */ 87#define PG_swapcache 15 /* Swap page: swp_entry_t in private */
88 88
89#define PG_mappedtodisk 16 /* Has blocks allocated on-disk */ 89#define PG_mappedtodisk 16 /* Has blocks allocated on-disk */
90#define PG_reclaim 17 /* To be reclaimed asap */ 90#define PG_reclaim 17 /* To be reclaimed asap */
91#define PG_nosave_free 18 /* Used for system suspend/resume */
92#define PG_buddy 19 /* Page is free, on buddy lists */ 91#define PG_buddy 19 /* Page is free, on buddy lists */
93 92
94/* PG_owner_priv_1 users should have descriptive aliases */ 93/* PG_owner_priv_1 users should have descriptive aliases */
@@ -214,16 +213,6 @@ static inline void SetPageUptodate(struct page *page)
214 ret; \ 213 ret; \
215 }) 214 })
216 215
217#define PageNosave(page) test_bit(PG_nosave, &(page)->flags)
218#define SetPageNosave(page) set_bit(PG_nosave, &(page)->flags)
219#define TestSetPageNosave(page) test_and_set_bit(PG_nosave, &(page)->flags)
220#define ClearPageNosave(page) clear_bit(PG_nosave, &(page)->flags)
221#define TestClearPageNosave(page) test_and_clear_bit(PG_nosave, &(page)->flags)
222
223#define PageNosaveFree(page) test_bit(PG_nosave_free, &(page)->flags)
224#define SetPageNosaveFree(page) set_bit(PG_nosave_free, &(page)->flags)
225#define ClearPageNosaveFree(page) clear_bit(PG_nosave_free, &(page)->flags)
226
227#define PageBuddy(page) test_bit(PG_buddy, &(page)->flags) 216#define PageBuddy(page) test_bit(PG_buddy, &(page)->flags)
228#define __SetPageBuddy(page) __set_bit(PG_buddy, &(page)->flags) 217#define __SetPageBuddy(page) __set_bit(PG_buddy, &(page)->flags)
229#define __ClearPageBuddy(page) __clear_bit(PG_buddy, &(page)->flags) 218#define __ClearPageBuddy(page) __clear_bit(PG_buddy, &(page)->flags)
@@ -241,6 +230,34 @@ static inline void SetPageUptodate(struct page *page)
241#define __SetPageCompound(page) __set_bit(PG_compound, &(page)->flags) 230#define __SetPageCompound(page) __set_bit(PG_compound, &(page)->flags)
242#define __ClearPageCompound(page) __clear_bit(PG_compound, &(page)->flags) 231#define __ClearPageCompound(page) __clear_bit(PG_compound, &(page)->flags)
243 232
233/*
234 * PG_reclaim is used in combination with PG_compound to mark the
235 * head and tail of a compound page
236 *
237 * PG_compound & PG_reclaim => Tail page
238 * PG_compound & ~PG_reclaim => Head page
239 */
240
241#define PG_head_tail_mask ((1L << PG_compound) | (1L << PG_reclaim))
242
243#define PageTail(page) ((page->flags & PG_head_tail_mask) \
244 == PG_head_tail_mask)
245
246static inline void __SetPageTail(struct page *page)
247{
248 page->flags |= PG_head_tail_mask;
249}
250
251static inline void __ClearPageTail(struct page *page)
252{
253 page->flags &= ~PG_head_tail_mask;
254}
255
256#define PageHead(page) ((page->flags & PG_head_tail_mask) \
257 == (1L << PG_compound))
258#define __SetPageHead(page) __SetPageCompound(page)
259#define __ClearPageHead(page) __ClearPageCompound(page)
260
244#ifdef CONFIG_SWAP 261#ifdef CONFIG_SWAP
245#define PageSwapCache(page) test_bit(PG_swapcache, &(page)->flags) 262#define PageSwapCache(page) test_bit(PG_swapcache, &(page)->flags)
246#define SetPageSwapCache(page) set_bit(PG_swapcache, &(page)->flags) 263#define SetPageSwapCache(page) set_bit(PG_swapcache, &(page)->flags)