Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Hibernation: Introduce exportable suspend ioctls header (rev. 2)

Move the definitions of hibernation ioctls to a separate header file in
include/linux, which can be exported to the user space.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Len Brown <len.brown@intel.com>

authored by

Rafael J. Wysocki and committed by
Len Brown
3010f8ca cc5d207c

+39 -33
+5 -5
Documentation/power/userland-swsusp.txt
··· 14 14 15 15 The interface consists of a character device providing the open(), 16 16 release(), read(), and write() operations as well as several ioctl() 17 - commands defined in kernel/power/power.h. The major and minor 17 + commands defined in include/linux/suspend_ioctls.h . The major and minor 18 18 numbers of the device are, respectively, 10 and 231, and they can 19 19 be read from /sys/class/misc/snapshot/dev. 20 20 ··· 70 70 SNAPSHOT_SET_SWAP_AREA - set the resume partition and the offset (in <PAGE_SIZE> 71 71 units) from the beginning of the partition at which the swap header is 72 72 located (the last ioctl() argument should point to a struct 73 - resume_swap_area, as defined in kernel/power/power.h, containing the 74 - resume device specification and the offset); for swap partitions the 75 - offset is always 0, but it is different from zero for swap files (see 76 - Documentation/swsusp-and-swap-files.txt for details). 73 + resume_swap_area, as defined in kernel/power/suspend_ioctls.h, 74 + containing the resume device specification and the offset); for swap 75 + partitions the offset is always 0, but it is different from zero for 76 + swap files (see Documentation/swsusp-and-swap-files.txt for details). 77 77 78 78 SNAPSHOT_PLATFORM_SUPPORT - enable/disable the hibernation platform support, 79 79 depending on the argument value (enable, if the argument is nonzero)
+1
include/linux/Kbuild
··· 143 143 header-y += sockios.h 144 144 header-y += som.h 145 145 header-y += sound.h 146 + header-y += suspend_ioctls.h 146 147 header-y += taskstats.h 147 148 header-y += telephony.h 148 149 header-y += termios.h
+32
include/linux/suspend_ioctls.h
··· 1 + #ifndef _LINUX_SUSPEND_IOCTLS_H 2 + #define _LINUX_SUSPEND_IOCTLS_H 3 + 4 + /* 5 + * This structure is used to pass the values needed for the identification 6 + * of the resume swap area from a user space to the kernel via the 7 + * SNAPSHOT_SET_SWAP_AREA ioctl 8 + */ 9 + struct resume_swap_area { 10 + loff_t offset; 11 + u_int32_t dev; 12 + } __attribute__((packed)); 13 + 14 + #define SNAPSHOT_IOC_MAGIC '3' 15 + #define SNAPSHOT_FREEZE _IO(SNAPSHOT_IOC_MAGIC, 1) 16 + #define SNAPSHOT_UNFREEZE _IO(SNAPSHOT_IOC_MAGIC, 2) 17 + #define SNAPSHOT_ATOMIC_RESTORE _IO(SNAPSHOT_IOC_MAGIC, 4) 18 + #define SNAPSHOT_FREE _IO(SNAPSHOT_IOC_MAGIC, 5) 19 + #define SNAPSHOT_FREE_SWAP_PAGES _IO(SNAPSHOT_IOC_MAGIC, 9) 20 + #define SNAPSHOT_S2RAM _IO(SNAPSHOT_IOC_MAGIC, 11) 21 + #define SNAPSHOT_SET_SWAP_AREA _IOW(SNAPSHOT_IOC_MAGIC, 13, \ 22 + struct resume_swap_area) 23 + #define SNAPSHOT_GET_IMAGE_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 14, loff_t) 24 + #define SNAPSHOT_PLATFORM_SUPPORT _IO(SNAPSHOT_IOC_MAGIC, 15) 25 + #define SNAPSHOT_POWER_OFF _IO(SNAPSHOT_IOC_MAGIC, 16) 26 + #define SNAPSHOT_CREATE_IMAGE _IOW(SNAPSHOT_IOC_MAGIC, 17, int) 27 + #define SNAPSHOT_PREF_IMAGE_SIZE _IO(SNAPSHOT_IOC_MAGIC, 18) 28 + #define SNAPSHOT_AVAIL_SWAP_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 19, loff_t) 29 + #define SNAPSHOT_ALLOC_SWAP_PAGE _IOR(SNAPSHOT_IOC_MAGIC, 20, loff_t) 30 + #define SNAPSHOT_IOC_MAXNR 20 31 + 32 + #endif /* _LINUX_SUSPEND_IOCTLS_H */
+1 -28
kernel/power/power.h
··· 1 1 #include <linux/suspend.h> 2 + #include <linux/suspend_ioctls.h> 2 3 #include <linux/utsname.h> 3 4 4 5 struct swsusp_info { ··· 134 133 extern int snapshot_write_next(struct snapshot_handle *handle, size_t count); 135 134 extern void snapshot_write_finalize(struct snapshot_handle *handle); 136 135 extern int snapshot_image_loaded(struct snapshot_handle *handle); 137 - 138 - /* 139 - * This structure is used to pass the values needed for the identification 140 - * of the resume swap area from a user space to the kernel via the 141 - * SNAPSHOT_SET_SWAP_AREA ioctl 142 - */ 143 - struct resume_swap_area { 144 - loff_t offset; 145 - u_int32_t dev; 146 - } __attribute__((packed)); 147 - 148 - #define SNAPSHOT_IOC_MAGIC '3' 149 - #define SNAPSHOT_FREEZE _IO(SNAPSHOT_IOC_MAGIC, 1) 150 - #define SNAPSHOT_UNFREEZE _IO(SNAPSHOT_IOC_MAGIC, 2) 151 - #define SNAPSHOT_ATOMIC_RESTORE _IO(SNAPSHOT_IOC_MAGIC, 4) 152 - #define SNAPSHOT_FREE _IO(SNAPSHOT_IOC_MAGIC, 5) 153 - #define SNAPSHOT_FREE_SWAP_PAGES _IO(SNAPSHOT_IOC_MAGIC, 9) 154 - #define SNAPSHOT_S2RAM _IO(SNAPSHOT_IOC_MAGIC, 11) 155 - #define SNAPSHOT_SET_SWAP_AREA _IOW(SNAPSHOT_IOC_MAGIC, 13, \ 156 - struct resume_swap_area) 157 - #define SNAPSHOT_GET_IMAGE_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 14, loff_t) 158 - #define SNAPSHOT_PLATFORM_SUPPORT _IO(SNAPSHOT_IOC_MAGIC, 15) 159 - #define SNAPSHOT_POWER_OFF _IO(SNAPSHOT_IOC_MAGIC, 16) 160 - #define SNAPSHOT_CREATE_IMAGE _IOW(SNAPSHOT_IOC_MAGIC, 17, int) 161 - #define SNAPSHOT_PREF_IMAGE_SIZE _IO(SNAPSHOT_IOC_MAGIC, 18) 162 - #define SNAPSHOT_AVAIL_SWAP_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 19, loff_t) 163 - #define SNAPSHOT_ALLOC_SWAP_PAGE _IOR(SNAPSHOT_IOC_MAGIC, 20, loff_t) 164 - #define SNAPSHOT_IOC_MAXNR 20 165 136 166 137 /* If unset, the snapshot device cannot be open. */ 167 138 extern atomic_t snapshot_device_available;