diff options
Diffstat (limited to 'include/linux/page-flags.h')
| -rw-r--r-- | include/linux/page-flags.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index d1fe1a761047..8304959ad336 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
| @@ -198,6 +198,7 @@ struct page; /* forward declaration */ | |||
| 198 | TESTPAGEFLAG(Locked, locked) | 198 | TESTPAGEFLAG(Locked, locked) |
| 199 | PAGEFLAG(Error, error) TESTCLEARFLAG(Error, error) | 199 | PAGEFLAG(Error, error) TESTCLEARFLAG(Error, error) |
| 200 | PAGEFLAG(Referenced, referenced) TESTCLEARFLAG(Referenced, referenced) | 200 | PAGEFLAG(Referenced, referenced) TESTCLEARFLAG(Referenced, referenced) |
| 201 | __SETPAGEFLAG(Referenced, referenced) | ||
| 201 | PAGEFLAG(Dirty, dirty) TESTSCFLAG(Dirty, dirty) __CLEARPAGEFLAG(Dirty, dirty) | 202 | PAGEFLAG(Dirty, dirty) TESTSCFLAG(Dirty, dirty) __CLEARPAGEFLAG(Dirty, dirty) |
| 202 | PAGEFLAG(LRU, lru) __CLEARPAGEFLAG(LRU, lru) | 203 | PAGEFLAG(LRU, lru) __CLEARPAGEFLAG(LRU, lru) |
| 203 | PAGEFLAG(Active, active) __CLEARPAGEFLAG(Active, active) | 204 | PAGEFLAG(Active, active) __CLEARPAGEFLAG(Active, active) |
| @@ -208,6 +209,7 @@ PAGEFLAG(Pinned, pinned) TESTSCFLAG(Pinned, pinned) /* Xen */ | |||
| 208 | PAGEFLAG(SavePinned, savepinned); /* Xen */ | 209 | PAGEFLAG(SavePinned, savepinned); /* Xen */ |
| 209 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) | 210 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) |
| 210 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) | 211 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) |
| 212 | __SETPAGEFLAG(SwapBacked, swapbacked) | ||
| 211 | 213 | ||
| 212 | __PAGEFLAG(SlobFree, slob_free) | 214 | __PAGEFLAG(SlobFree, slob_free) |
| 213 | 215 | ||
| @@ -317,13 +319,23 @@ CLEARPAGEFLAG(Uptodate, uptodate) | |||
| 317 | extern void cancel_dirty_page(struct page *page, unsigned int account_size); | 319 | extern void cancel_dirty_page(struct page *page, unsigned int account_size); |
| 318 | 320 | ||
| 319 | int test_clear_page_writeback(struct page *page); | 321 | int test_clear_page_writeback(struct page *page); |
| 320 | int test_set_page_writeback(struct page *page); | 322 | int __test_set_page_writeback(struct page *page, bool keep_write); |
| 323 | |||
| 324 | #define test_set_page_writeback(page) \ | ||
| 325 | __test_set_page_writeback(page, false) | ||
| 326 | #define test_set_page_writeback_keepwrite(page) \ | ||
| 327 | __test_set_page_writeback(page, true) | ||
| 321 | 328 | ||
| 322 | static inline void set_page_writeback(struct page *page) | 329 | static inline void set_page_writeback(struct page *page) |
| 323 | { | 330 | { |
| 324 | test_set_page_writeback(page); | 331 | test_set_page_writeback(page); |
| 325 | } | 332 | } |
| 326 | 333 | ||
| 334 | static inline void set_page_writeback_keepwrite(struct page *page) | ||
| 335 | { | ||
| 336 | test_set_page_writeback_keepwrite(page); | ||
| 337 | } | ||
| 338 | |||
| 327 | #ifdef CONFIG_PAGEFLAGS_EXTENDED | 339 | #ifdef CONFIG_PAGEFLAGS_EXTENDED |
| 328 | /* | 340 | /* |
| 329 | * System with lots of page flags available. This allows separate | 341 | * System with lots of page flags available. This allows separate |
| @@ -348,6 +360,9 @@ static inline void ClearPageCompound(struct page *page) | |||
| 348 | ClearPageHead(page); | 360 | ClearPageHead(page); |
| 349 | } | 361 | } |
| 350 | #endif | 362 | #endif |
| 363 | |||
| 364 | #define PG_head_mask ((1L << PG_head)) | ||
| 365 | |||
| 351 | #else | 366 | #else |
| 352 | /* | 367 | /* |
| 353 | * Reduce page flag use as much as possible by overlapping | 368 | * Reduce page flag use as much as possible by overlapping |
