#include <linux/fs.h>
#include <linux/mount.h>
#include <linux/pm.h>
-#include <linux/cpu.h>
#include "power.h"
+extern suspend_disk_method_t pm_disk_mode;
+
+extern int swsusp_shrink_memory(void);
+extern int swsusp_suspend(void);
+extern int swsusp_write(struct pbe *pblist, unsigned int nr_pages);
+extern int swsusp_check(void);
+extern int swsusp_read(struct pbe **pblist_ptr);
+extern void swsusp_close(void);
+extern int swsusp_resume(void);
+
+
static int noresume = 0;
char resume_file[256] = CONFIG_PM_STD_PARTITION;
dev_t swsusp_resume_device;
while(1);
}
+
+static int in_suspend __nosavedata = 0;
+
+
static inline void platform_finish(void)
{
if (pm_disk_mode == PM_DISK_PLATFORM) {
int error;
pm_prepare_console();
-
- error = disable_nonboot_cpus();
- if (error)
- goto enable_cpus;
+ sys_sync();
+ disable_nonboot_cpus();
if (freeze_processes()) {
error = -EBUSY;
return 0;
thaw:
thaw_processes();
-enable_cpus:
enable_nonboot_cpus();
pm_restore_console();
return error;
if (in_suspend) {
device_resume();
pr_debug("PM: writing image.\n");
- error = swsusp_write();
+ error = swsusp_write(pagedir_nosave, nr_copy_pages);
if (!error)
power_down(pm_disk_mode);
else {
pr_debug("PM: Reading swsusp image.\n");
- if ((error = swsusp_read())) {
+ if ((error = swsusp_read(&pagedir_nosave))) {
swsusp_free();
goto Thaw;
}
late_initcall(software_resume);
-static const char * const pm_disk_modes[] = {
+static char * pm_disk_modes[] = {
[PM_DISK_FIRMWARE] = "firmware",
[PM_DISK_PLATFORM] = "platform",
[PM_DISK_SHUTDOWN] = "shutdown",