Add loop device ioctls
PATCH 1/1 Add loop device ioctls
These changes add the ioctl() calls used by loop devices.
Note: using Thunderbird, it seems much easier to attach files than include them inline. Most email readers will still show them (AFAIK)
Signature · 4 lines
------------------------------------------------------------ Gary Thomas | Consulting for the MLB Associates | Embedded world ------------------------------------------------------------
syscall_types.h +30 -0
@@ -79,3 +79,33 @@STRUCT (mixer_info,MK_ARRAY (TYPE_CHAR ,16 ),MK_ARRAY (TYPE_CHAR ,32 ),TYPE_INT ,MK_ARRAY (TYPE_INT ,10 )) +/* loop device ioctls */ +STRUCT (loop_info, +TYPE_INT ,/* lo_number */ +TYPE_SHORT ,/* lo_device */ +TYPE_ULONG ,/* lo_inode */ +TYPE_SHORT ,/* lo_rdevice */ +TYPE_INT ,/* lo_offset */ +TYPE_INT ,/* lo_encrypt_type */ +TYPE_INT ,/* lo_encrypt_key_size */ +TYPE_INT ,/* lo_flags */ +MK_ARRAY (TYPE_CHAR ,64 ),/* lo_name */ +MK_ARRAY (TYPE_CHAR ,32 ),/* lo_encrypt_key */ +MK_ARRAY (TYPE_ULONG ,2 ),/* lo_init */ +MK_ARRAY (TYPE_CHAR ,4 )/* reserved */ + ) + +STRUCT (loop_info64, +TYPE_ULONGLONG ,/* lo_device */ +TYPE_ULONGLONG ,/* lo_inode */ +TYPE_ULONGLONG ,/* lo_rdevice */ +TYPE_ULONGLONG ,/* lo_offset */ +TYPE_ULONG ,/* lo_number */ +TYPE_ULONG ,/* lo_encrypt_type */ +TYPE_ULONG ,/* lo_encrypt_key_size */ +TYPE_ULONG ,/* lo_flags */ +MK_ARRAY (TYPE_CHAR ,64 ),/* lo_name */ +MK_ARRAY (TYPE_CHAR ,64 ),/* lo_crypt_name */ +MK_ARRAY (TYPE_CHAR ,32 ),/* lo_encrypt_key */ +MK_ARRAY (TYPE_ULONGLONG ,2 )/* lo_init */ + )
syscall.c +1 -0
@@ -68,6 +68,7 @@#include <linux/soundcard.h> #include <linux/dirent.h> #include <linux/kd.h> +#include <linux/loop.h> #include "qemu.h"
ioctls.h +10 -0
@@ -300,3 +300,13 @@ IOCTL(VFAT_IOCTL_READDIR_BOTH, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) IOCTL(VFAT_IOCTL_READDIR_SHORT, IOC_R, MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_dirent), 2))) + + IOCTL(LOOP_SET_FD, 0, TYPE_INT) + IOCTL(LOOP_CLR_FD, 0, TYPE_INT) + IOCTL(LOOP_SET_STATUS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info))) + IOCTL(LOOP_GET_STATUS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info))) +#if 0 // These have some problems - not fully tested + IOCTL(LOOP_SET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) + IOCTL(LOOP_GET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) +#endif +IOCTL (LOOP_CHANGE_FD ,0 ,TYPE_INT )
syscall_defs.h +9 -0
@@ -830,7 +830,16 @@#define TARGET_HDIO_SET_DMA 0x0326/* change use-dma flag */ #define TARGET_HDIO_SET_PIO_MODE 0x0327/* reconfig interface to new speed */ +/* loop ioctls */ +#define TARGET_LOOP_SET_FD 0x4C00 +#define TARGET_LOOP_CLR_FD 0x4C01 +#define TARGET_LOOP_SET_STATUS 0x4C02 +#define TARGET_LOOP_GET_STATUS 0x4C03 +#define TARGET_LOOP_SET_STATUS64 0x4C04 +#define TARGET_LOOP_GET_STATUS64 0x4C05 +#define TARGET_LOOP_CHANGE_FD 0x4C06 +/* from asm/termbits.h */ #define TARGET_NCC 8