power.h 1.9 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 12 13 14 15 16 17
   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;
18 19
	unsigned long		pages;
	swp_entry_t		start;
L
Linus Torvalds 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
} __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 pm_prepare_console(void);
extern void pm_restore_console(void);
48 49 50 51 52

/* References to section boundaries */
extern const void __nosave_begin, __nosave_end;

extern unsigned int nr_copy_pages;
53 54 55
extern struct pbe *pagedir_nosave;

/*
56 57
 * Preferred image size in MB (set it to zero to get the smallest
 * image possible)
58
 */
59
#define IMAGE_SIZE	500
60 61 62 63

extern asmlinkage int swsusp_arch_suspend(void);
extern asmlinkage int swsusp_arch_resume(void);

64
extern unsigned int count_data_pages(void);
65
extern void free_pagedir(struct pbe *pblist);
66
extern void release_eaten_pages(void);
67
extern struct pbe *alloc_pagedir(unsigned nr_pages, gfp_t gfp_mask, int safe_needed);
68
extern void swsusp_free(void);
69
extern int alloc_data_pages(struct pbe *pblist, gfp_t gfp_mask, int safe_needed);
70 71 72
extern unsigned int snapshot_nr_pages(void);
extern struct pbe *snapshot_pblist(void);
extern void snapshot_pblist_set(struct pbe *pblist);