diff options
Diffstat (limited to 'kernel/power/user.c')
-rw-r--r-- | kernel/power/user.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/kernel/power/user.c b/kernel/power/user.c index d991d3b0e5a4..4c24ca5d62e3 100644 --- a/kernel/power/user.c +++ b/kernel/power/user.c | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/suspend.h> | 12 | #include <linux/suspend.h> |
13 | #include <linux/syscalls.h> | 13 | #include <linux/syscalls.h> |
14 | #include <linux/reboot.h> | ||
14 | #include <linux/string.h> | 15 | #include <linux/string.h> |
15 | #include <linux/device.h> | 16 | #include <linux/device.h> |
16 | #include <linux/miscdevice.h> | 17 | #include <linux/miscdevice.h> |
@@ -313,6 +314,33 @@ OutS3: | |||
313 | up(&pm_sem); | 314 | up(&pm_sem); |
314 | break; | 315 | break; |
315 | 316 | ||
317 | case SNAPSHOT_PMOPS: | ||
318 | switch (arg) { | ||
319 | |||
320 | case PMOPS_PREPARE: | ||
321 | if (pm_ops->prepare) { | ||
322 | error = pm_ops->prepare(PM_SUSPEND_DISK); | ||
323 | } | ||
324 | break; | ||
325 | |||
326 | case PMOPS_ENTER: | ||
327 | kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK); | ||
328 | error = pm_ops->enter(PM_SUSPEND_DISK); | ||
329 | break; | ||
330 | |||
331 | case PMOPS_FINISH: | ||
332 | if (pm_ops && pm_ops->finish) { | ||
333 | pm_ops->finish(PM_SUSPEND_DISK); | ||
334 | } | ||
335 | break; | ||
336 | |||
337 | default: | ||
338 | printk(KERN_ERR "SNAPSHOT_PMOPS: invalid argument %ld\n", arg); | ||
339 | error = -EINVAL; | ||
340 | |||
341 | } | ||
342 | break; | ||
343 | |||
316 | default: | 344 | default: |
317 | error = -ENOTTY; | 345 | error = -ENOTTY; |
318 | 346 | ||