[PATCH] swsusp: rework image freeing
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / kernel / power / power.h
CommitLineData
1da177e4
LT
1#include <linux/suspend.h>
2#include <linux/utsname.h>
3
8686bcd0 4/* With SUSPEND_CONSOLE defined suspend looks *really* cool, but
1da177e4
LT
5 we probably do not take enough locks for switching consoles, etc,
6 so bad things might happen.
7*/
8#if defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE)
9#define SUSPEND_CONSOLE (MAX_NR_CONSOLES-1)
10#endif
11
0f7347c2
RW
12#define MAX_PBES ((PAGE_SIZE - sizeof(struct new_utsname) \
13 - 4 - 3*sizeof(unsigned long) - sizeof(int) \
14 - sizeof(void *)) / sizeof(swp_entry_t))
1da177e4
LT
15
16struct swsusp_info {
17 struct new_utsname uts;
18 u32 version_code;
19 unsigned long num_physpages;
20 int cpus;
21 unsigned long image_pages;
22 unsigned long pagedir_pages;
23 suspend_pagedir_t * suspend_pagedir;
0f7347c2 24 swp_entry_t pagedir[MAX_PBES];
1da177e4
LT
25} __attribute__((aligned(PAGE_SIZE)));
26
27
28
29#ifdef CONFIG_SOFTWARE_SUSPEND
30extern int pm_suspend_disk(void);
31
32#else
33static inline int pm_suspend_disk(void)
34{
35 return -EPERM;
36}
37#endif
38extern struct semaphore pm_sem;
39#define power_attr(_name) \
40static struct subsys_attribute _name##_attr = { \
41 .attr = { \
42 .name = __stringify(_name), \
43 .mode = 0644, \
44 }, \
45 .show = _name##_show, \
46 .store = _name##_store, \
47}
48
49extern struct subsystem power_subsys;
50
51extern int freeze_processes(void);
52extern void thaw_processes(void);
53
54extern int pm_prepare_console(void);
55extern void pm_restore_console(void);