| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _LINUX_SWSUSP_H | 
 | 2 | #define _LINUX_SWSUSP_H | 
 | 3 |  | 
 | 4 | #if defined(CONFIG_X86) || defined(CONFIG_FRV) || defined(CONFIG_PPC32) | 
 | 5 | #include <asm/suspend.h> | 
 | 6 | #endif | 
 | 7 | #include <linux/swap.h> | 
 | 8 | #include <linux/notifier.h> | 
 | 9 | #include <linux/config.h> | 
 | 10 | #include <linux/init.h> | 
 | 11 | #include <linux/pm.h> | 
 | 12 |  | 
 | 13 | /* page backup entry */ | 
 | 14 | typedef struct pbe { | 
 | 15 | 	unsigned long address;		/* address of the copy */ | 
 | 16 | 	unsigned long orig_address;	/* original address of page */ | 
| Rafael J. Wysocki | 7088a5c | 2006-01-06 00:13:05 -0800 | [diff] [blame] | 17 | 	struct pbe *next; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 18 | } suspend_pagedir_t; | 
 | 19 |  | 
 | 20 | #define for_each_pbe(pbe, pblist) \ | 
 | 21 | 	for (pbe = pblist ; pbe ; pbe = pbe->next) | 
 | 22 |  | 
 | 23 | #define PBES_PER_PAGE      (PAGE_SIZE/sizeof(struct pbe)) | 
 | 24 | #define PB_PAGE_SKIP       (PBES_PER_PAGE-1) | 
 | 25 |  | 
 | 26 | #define for_each_pb_page(pbe, pblist) \ | 
 | 27 | 	for (pbe = pblist ; pbe ; pbe = (pbe+PB_PAGE_SKIP)->next) | 
 | 28 |  | 
 | 29 |  | 
 | 30 | #define SWAP_FILENAME_MAXLENGTH	32 | 
 | 31 |  | 
 | 32 |  | 
 | 33 | extern dev_t swsusp_resume_device; | 
 | 34 |     | 
 | 35 | /* mm/vmscan.c */ | 
 | 36 | extern int shrink_mem(void); | 
 | 37 |  | 
 | 38 | /* mm/page_alloc.c */ | 
 | 39 | extern void drain_local_pages(void); | 
 | 40 | extern void mark_free_pages(struct zone *zone); | 
 | 41 |  | 
 | 42 | #ifdef CONFIG_PM | 
 | 43 | /* kernel/power/swsusp.c */ | 
 | 44 | extern int software_suspend(void); | 
| Rafael J. Wysocki | 46cd2f3 | 2006-02-07 12:58:50 -0800 | [diff] [blame] | 45 |  | 
 | 46 | #if defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) | 
 | 47 | extern int pm_prepare_console(void); | 
 | 48 | extern void pm_restore_console(void); | 
 | 49 | #else | 
 | 50 | static inline int pm_prepare_console(void) { return 0; } | 
 | 51 | static inline void pm_restore_console(void) {} | 
 | 52 | #endif /* defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | #else | 
 | 54 | static inline int software_suspend(void) | 
 | 55 | { | 
 | 56 | 	printk("Warning: fake suspend called\n"); | 
 | 57 | 	return -EPERM; | 
 | 58 | } | 
| Rafael J. Wysocki | 46cd2f3 | 2006-02-07 12:58:50 -0800 | [diff] [blame] | 59 | #endif /* CONFIG_PM */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 60 |  | 
| Li Shaohua | 5a72e04 | 2005-06-25 14:55:06 -0700 | [diff] [blame] | 61 | #ifdef CONFIG_SUSPEND_SMP | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 62 | extern void disable_nonboot_cpus(void); | 
 | 63 | extern void enable_nonboot_cpus(void); | 
 | 64 | #else | 
 | 65 | static inline void disable_nonboot_cpus(void) {} | 
 | 66 | static inline void enable_nonboot_cpus(void) {} | 
 | 67 | #endif | 
 | 68 |  | 
 | 69 | void save_processor_state(void); | 
 | 70 | void restore_processor_state(void); | 
 | 71 | struct saved_context; | 
 | 72 | void __save_processor_state(struct saved_context *ctxt); | 
 | 73 | void __restore_processor_state(struct saved_context *ctxt); | 
| Rafael J. Wysocki | 2c1b4a5 | 2005-10-30 14:59:58 -0800 | [diff] [blame] | 74 | unsigned long get_safe_page(gfp_t gfp_mask); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 75 |  | 
| Rafael J. Wysocki | 25761b6 | 2005-10-30 14:59:56 -0800 | [diff] [blame] | 76 | /* | 
 | 77 |  * XXX: We try to keep some more pages free so that I/O operations succeed | 
 | 78 |  * without paging. Might this be more? | 
 | 79 |  */ | 
| Rafael J. Wysocki | 72a97e0 | 2006-01-06 00:13:46 -0800 | [diff] [blame] | 80 | #define PAGES_FOR_IO	1024 | 
| Rafael J. Wysocki | 25761b6 | 2005-10-30 14:59:56 -0800 | [diff] [blame] | 81 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 82 | #endif /* _LINUX_SWSUSP_H */ |