diff options
Diffstat (limited to 'include/linux/suspend.h')
-rw-r--r-- | include/linux/suspend.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/include/linux/suspend.h b/include/linux/suspend.h new file mode 100644 index 000000000000..2bf0d5fabcdb --- /dev/null +++ b/include/linux/suspend.h @@ -0,0 +1,75 @@ +#ifndef _LINUX_SWSUSP_H +#define _LINUX_SWSUSP_H + +#if defined(CONFIG_X86) || defined(CONFIG_FRV) || defined(CONFIG_PPC32) +#include <asm/suspend.h> +#endif +#include <linux/swap.h> +#include <linux/notifier.h> +#include <linux/config.h> +#include <linux/init.h> +#include <linux/pm.h> + +/* page backup entry */ +typedef struct pbe { + unsigned long address; /* address of the copy */ + unsigned long orig_address; /* original address of page */ + swp_entry_t swap_address; + + struct pbe *next; /* also used as scratch space at + * end of page (see link, diskpage) + */ +} suspend_pagedir_t; + +#define for_each_pbe(pbe, pblist) \ + for (pbe = pblist ; pbe ; pbe = pbe->next) + +#define PBES_PER_PAGE (PAGE_SIZE/sizeof(struct pbe)) +#define PB_PAGE_SKIP (PBES_PER_PAGE-1) + +#define for_each_pb_page(pbe, pblist) \ + for (pbe = pblist ; pbe ; pbe = (pbe+PB_PAGE_SKIP)->next) + + +#define SWAP_FILENAME_MAXLENGTH 32 + + +extern dev_t swsusp_resume_device; + +/* mm/vmscan.c */ +extern int shrink_mem(void); + +/* mm/page_alloc.c */ +extern void drain_local_pages(void); +extern void mark_free_pages(struct zone *zone); + +#ifdef CONFIG_PM +/* kernel/power/swsusp.c */ +extern int software_suspend(void); + +extern int pm_prepare_console(void); +extern void pm_restore_console(void); + +#else +static inline int software_suspend(void) +{ + printk("Warning: fake suspend called\n"); + return -EPERM; +} +#endif + +#ifdef CONFIG_SMP +extern void disable_nonboot_cpus(void); +extern void enable_nonboot_cpus(void); +#else +static inline void disable_nonboot_cpus(void) {} +static inline void enable_nonboot_cpus(void) {} +#endif + +void save_processor_state(void); +void restore_processor_state(void); +struct saved_context; +void __save_processor_state(struct saved_context *ctxt); +void __restore_processor_state(struct saved_context *ctxt); + +#endif /* _LINUX_SWSUSP_H */ |