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 */ | ... | ... |