Commit b80059146a170ea5111a55f3757b8de4cf0c729b
1 parent
c38b6e25
Add loop device ioctls (Gary Thomas).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4257 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
48 additions
and
0 deletions
linux-user/ioctls.h
| @@ -300,3 +300,13 @@ | @@ -300,3 +300,13 @@ | ||
| 300 | 300 | ||
| 301 | IOCTL(VFAT_IOCTL_READDIR_BOTH, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) | 301 | IOCTL(VFAT_IOCTL_READDIR_BOTH, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) |
| 302 | IOCTL(VFAT_IOCTL_READDIR_SHORT, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) | 302 | IOCTL(VFAT_IOCTL_READDIR_SHORT, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) |
| 303 | + | ||
| 304 | + IOCTL(LOOP_SET_FD, 0, TYPE_INT) | ||
| 305 | + IOCTL(LOOP_CLR_FD, 0, TYPE_INT) | ||
| 306 | + IOCTL(LOOP_SET_STATUS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info))) | ||
| 307 | + IOCTL(LOOP_GET_STATUS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info))) | ||
| 308 | +#if 0 /* These have some problems - not fully tested */ | ||
| 309 | + IOCTL(LOOP_SET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) | ||
| 310 | + IOCTL(LOOP_GET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) | ||
| 311 | +#endif | ||
| 312 | + IOCTL(LOOP_CHANGE_FD, 0, TYPE_INT) |
linux-user/syscall.c
linux-user/syscall_defs.h
| @@ -830,6 +830,14 @@ struct target_pollfd { | @@ -830,6 +830,14 @@ struct target_pollfd { | ||
| 830 | #define TARGET_HDIO_SET_DMA 0x0326 /* change use-dma flag */ | 830 | #define TARGET_HDIO_SET_DMA 0x0326 /* change use-dma flag */ |
| 831 | #define TARGET_HDIO_SET_PIO_MODE 0x0327 /* reconfig interface to new speed */ | 831 | #define TARGET_HDIO_SET_PIO_MODE 0x0327 /* reconfig interface to new speed */ |
| 832 | 832 | ||
| 833 | +/* loop ioctls */ | ||
| 834 | +#define TARGET_LOOP_SET_FD 0x4C00 | ||
| 835 | +#define TARGET_LOOP_CLR_FD 0x4C01 | ||
| 836 | +#define TARGET_LOOP_SET_STATUS 0x4C02 | ||
| 837 | +#define TARGET_LOOP_GET_STATUS 0x4C03 | ||
| 838 | +#define TARGET_LOOP_SET_STATUS64 0x4C04 | ||
| 839 | +#define TARGET_LOOP_GET_STATUS64 0x4C05 | ||
| 840 | +#define TARGET_LOOP_CHANGE_FD 0x4C06 | ||
| 833 | 841 | ||
| 834 | /* from asm/termbits.h */ | 842 | /* from asm/termbits.h */ |
| 835 | 843 |
linux-user/syscall_types.h
| @@ -79,3 +79,32 @@ STRUCT(count_info, | @@ -79,3 +79,32 @@ STRUCT(count_info, | ||
| 79 | 79 | ||
| 80 | STRUCT(mixer_info, | 80 | STRUCT(mixer_info, |
| 81 | MK_ARRAY(TYPE_CHAR, 16), MK_ARRAY(TYPE_CHAR, 32), TYPE_INT, MK_ARRAY(TYPE_INT, 10)) | 81 | MK_ARRAY(TYPE_CHAR, 16), MK_ARRAY(TYPE_CHAR, 32), TYPE_INT, MK_ARRAY(TYPE_INT, 10)) |
| 82 | + | ||
| 83 | +/* loop device ioctls */ | ||
| 84 | +STRUCT(loop_info, | ||
| 85 | + TYPE_INT, /* lo_number */ | ||
| 86 | + TYPE_SHORT, /* lo_device */ | ||
| 87 | + TYPE_ULONG, /* lo_inode */ | ||
| 88 | + TYPE_SHORT, /* lo_rdevice */ | ||
| 89 | + TYPE_INT, /* lo_offset */ | ||
| 90 | + TYPE_INT, /* lo_encrypt_type */ | ||
| 91 | + TYPE_INT, /* lo_encrypt_key_size */ | ||
| 92 | + TYPE_INT, /* lo_flags */ | ||
| 93 | + MK_ARRAY(TYPE_CHAR, 64), /* lo_name */ | ||
| 94 | + MK_ARRAY(TYPE_CHAR, 32), /* lo_encrypt_key */ | ||
| 95 | + MK_ARRAY(TYPE_ULONG, 2), /* lo_init */ | ||
| 96 | + MK_ARRAY(TYPE_CHAR, 4)) /* reserved */ | ||
| 97 | + | ||
| 98 | +STRUCT(loop_info64, | ||
| 99 | + TYPE_ULONGLONG, /* lo_device */ | ||
| 100 | + TYPE_ULONGLONG, /* lo_inode */ | ||
| 101 | + TYPE_ULONGLONG, /* lo_rdevice */ | ||
| 102 | + TYPE_ULONGLONG, /* lo_offset */ | ||
| 103 | + TYPE_ULONG, /* lo_number */ | ||
| 104 | + TYPE_ULONG, /* lo_encrypt_type */ | ||
| 105 | + TYPE_ULONG, /* lo_encrypt_key_size */ | ||
| 106 | + TYPE_ULONG, /* lo_flags */ | ||
| 107 | + MK_ARRAY(TYPE_CHAR, 64), /* lo_name */ | ||
| 108 | + MK_ARRAY(TYPE_CHAR, 64), /* lo_crypt_name */ | ||
| 109 | + MK_ARRAY(TYPE_CHAR, 32), /* lo_encrypt_key */ | ||
| 110 | + MK_ARRAY(TYPE_ULONGLONG, 2)) /* lo_init */ |