diff options
| author | Pavel Machek <pavel@ucw.cz> | 2005-01-03 05:00:51 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-03 05:00:51 -0800 |
| commit | eaefadeb9eda1611f34b186fcea3465387032ebc (patch) | |
| tree | e118590101dd10c1d443688515f0f728777ba45f /include/linux | |
| parent | ed4a04b50ed5b7958d79b10cae085933a61b665c (diff) | |
[PATCH] swsusp: Kill O(n^2) algorithm in swsusp
Some machines are spending minutes of CPU time during suspend in stupid O(n^2)
algorithm. This patch replaces it with O(n) algorithm, making swsusp usable
to some people.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/page-flags.h | 5 | ||||
| -rw-r--r-- | include/linux/suspend.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 97325175d93b..4ac9f8c49d24 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -74,6 +74,7 @@ #define PG_swapcache 16 /* Swap page: swp_entry_t in private */ #define PG_mappedtodisk 17 /* Has blocks allocated on-disk */ #define PG_reclaim 18 /* To be reclaimed asap */ +#define PG_nosave_free 19 /* Free, should not be written */ /* @@ -277,6 +278,10 @@ extern unsigned long __read_page_state(unsigned offset); #define ClearPageNosave(page) clear_bit(PG_nosave, &(page)->flags) #define TestClearPageNosave(page) test_and_clear_bit(PG_nosave, &(page)->flags) +#define PageNosaveFree(page) test_bit(PG_nosave_free, &(page)->flags) +#define SetPageNosaveFree(page) set_bit(PG_nosave_free, &(page)->flags) +#define ClearPageNosaveFree(page) clear_bit(PG_nosave_free, &(page)->flags) + #define PageMappedToDisk(page) test_bit(PG_mappedtodisk, &(page)->flags) #define SetPageMappedToDisk(page) set_bit(PG_mappedtodisk, &(page)->flags) #define ClearPageMappedToDisk(page) clear_bit(PG_mappedtodisk, &(page)->flags) diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 932dc2ca4152..18f0145fcbbc 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h @@ -31,6 +31,7 @@ extern int shrink_mem(void); /* mm/page_alloc.c */ extern void drain_local_pages(void); +extern void mark_free_pages(struct zone *zone); /* kernel/power/swsusp.c */ extern int software_suspend(void); |
