power.h 1.3 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3
#include <linux/suspend.h>
#include <linux/utsname.h>

P
Pavel Machek 已提交
4
/* With SUSPEND_CONSOLE defined suspend looks *really* cool, but
L
Linus Torvalds 已提交
5 6 7 8 9 10 11
   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

12 13 14
#define MAX_PBES	((PAGE_SIZE - sizeof(struct new_utsname) \
			- 4 - 3*sizeof(unsigned long) - sizeof(int) \
			- sizeof(void *)) / sizeof(swp_entry_t))
L
Linus Torvalds 已提交
15 16 17 18 19 20 21 22 23

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;
24
	swp_entry_t		pagedir[MAX_PBES];
L
Linus Torvalds 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
} __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);