#include #include /* With SUSPEND_CONSOLE defined, it suspend looks *really* cool, but we probably do not take enough locks for switching consoles, etc, so bad things might happen. */ #if defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) #define SUSPEND_CONSOLE (MAX_NR_CONSOLES-1) #endif struct swsusp_info { struct new_utsname uts; u32 version_code; unsigned long num_physpages; int cpus; unsigned long image_pages; unsigned long pagedir_pages; suspend_pagedir_t * suspend_pagedir; swp_entry_t pagedir[768]; } __attribute__((aligned(PAGE_SIZE))); #ifdef CONFIG_SOFTWARE_SUSPEND extern int pm_suspend_disk(void); #else static inline int pm_suspend_disk(void) { return -EPERM; } #endif extern struct semaphore pm_sem; #define power_attr(_name) \ static struct subsys_attribute _name##_attr = { \ .attr = { \ .name = __stringify(_name), \ .mode = 0644, \ }, \ .show = _name##_show, \ .store = _name##_store, \ } extern struct subsystem power_subsys; extern int freeze_processes(void); extern void thaw_processes(void); extern int pm_prepare_console(void); extern void pm_restore_console(void);