| #ifndef __LINUX_PAGEISOLATION_H | |
| #define __LINUX_PAGEISOLATION_H | |
| /* | |
| * Changes migrate type in [start_pfn, end_pfn) to be MIGRATE_ISOLATE. | |
| * If specified range includes migrate types other than MOVABLE, | |
| * this will fail with -EBUSY. | |
| * | |
| * For isolating all pages in the range finally, the caller have to | |
| * free all pages in the range. test_page_isolated() can be used for | |
| * test it. | |
| */ | |
| extern int | |
| start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn); | |
| /* | |
| * Changes MIGRATE_ISOLATE to MIGRATE_MOVABLE. | |
| * target range is [start_pfn, end_pfn) | |
| */ | |
| extern int | |
| undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn); | |
| /* | |
| * test all pages in [start_pfn, end_pfn)are isolated or not. | |
| */ | |
| extern int | |
| test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn); | |
| /* | |
| * Internal funcs.Changes pageblock's migrate type. | |
| * Please use make_pagetype_isolated()/make_pagetype_movable(). | |
| */ | |
| extern int set_migratetype_isolate(struct page *page); | |
| extern void unset_migratetype_isolate(struct page *page); | |
| #endif |