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 | 300 | |
| 301 | 301 | IOCTL(VFAT_IOCTL_READDIR_BOTH, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) |
| 302 | 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 | 830 | #define TARGET_HDIO_SET_DMA 0x0326 /* change use-dma flag */ |
| 831 | 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 | 842 | /* from asm/termbits.h */ |
| 835 | 843 | ... | ... |
linux-user/syscall_types.h
| ... | ... | @@ -79,3 +79,32 @@ STRUCT(count_info, |
| 79 | 79 | |
| 80 | 80 | STRUCT(mixer_info, |
| 81 | 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 */ | ... | ... |