linux-user: Add loop control ioctls

Add support for the /dev/loop-control ioctls:
 LOOP_CTL_ADD
 LOOP_CTL_REMOVE
 LOOP_CTL_GET_FREE

[RV: fixed to apply to new header guards]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
Peter Maydell 2016-07-04 17:06:17 +01:00 committed by Riku Voipio
parent c815701e81
commit 884cdc48a9
3 changed files with 18 additions and 1 deletions

View File

@ -327,6 +327,10 @@
IOCTL(LOOP_GET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) IOCTL(LOOP_GET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64)))
IOCTL(LOOP_CHANGE_FD, 0, TYPE_INT) IOCTL(LOOP_CHANGE_FD, 0, TYPE_INT)
IOCTL(LOOP_CTL_ADD, 0, TYPE_INT)
IOCTL(LOOP_CTL_REMOVE, 0, TYPE_INT)
IOCTL(LOOP_CTL_GET_FREE, 0, TYPE_NULL)
IOCTL(MTIOCTOP, IOC_W, MK_PTR(MK_STRUCT(STRUCT_mtop))) IOCTL(MTIOCTOP, IOC_W, MK_PTR(MK_STRUCT(STRUCT_mtop)))
IOCTL(MTIOCGET, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtget))) IOCTL(MTIOCGET, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtget)))
IOCTL(MTIOCPOS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtpos))) IOCTL(MTIOCPOS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtpos)))

View File

@ -1,4 +1,6 @@
/* Copied from 2.6.25 kernel headers to avoid problems on older hosts. */ /* Copied from 2.6.25 kernel headers to avoid problems on older hosts,
* and subsequently updated to match newer additions to the API.
*/
#ifndef LINUX_LOOP_H #ifndef LINUX_LOOP_H
#define LINUX_LOOP_H #define LINUX_LOOP_H
@ -92,5 +94,12 @@ struct loop_info64 {
#define LOOP_SET_STATUS64 0x4C04 #define LOOP_SET_STATUS64 0x4C04
#define LOOP_GET_STATUS64 0x4C05 #define LOOP_GET_STATUS64 0x4C05
#define LOOP_CHANGE_FD 0x4C06 #define LOOP_CHANGE_FD 0x4C06
#define LOOP_SET_CAPACITY 0x4C07
#define LOOP_SET_DIRECT_IO 0x4C08
/* /dev/loop-control interface */
#define LOOP_CTL_ADD 0x4C80
#define LOOP_CTL_REMOVE 0x4C81
#define LOOP_CTL_GET_FREE 0x4C82
#endif #endif

View File

@ -1117,6 +1117,10 @@ struct target_pollfd {
#define TARGET_LOOP_GET_STATUS64 0x4C05 #define TARGET_LOOP_GET_STATUS64 0x4C05
#define TARGET_LOOP_CHANGE_FD 0x4C06 #define TARGET_LOOP_CHANGE_FD 0x4C06
#define TARGET_LOOP_CTL_ADD 0x4C80
#define TARGET_LOOP_CTL_REMOVE 0x4C81
#define TARGET_LOOP_CTL_GET_FREE 0x4C82
/* fb ioctls */ /* fb ioctls */
#define TARGET_FBIOGET_VSCREENINFO 0x4600 #define TARGET_FBIOGET_VSCREENINFO 0x4600
#define TARGET_FBIOPUT_VSCREENINFO 0x4601 #define TARGET_FBIOPUT_VSCREENINFO 0x4601