linux-user: Define ordinary usbfs ioctls.
Provide ioctl definitions for the generic thunk mechanism to convert most usbfs calls. Calculate arg size at runtime. Signed-off-by: Cortland Tölva <cst@tolva.net> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20181008163521.17341-3-cst@tolva.net> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
955727d29d
commit
6c753a63ed
@ -131,6 +131,44 @@
|
||||
IOCTL(FS_IOC_GETFLAGS, IOC_R, MK_PTR(TYPE_INT))
|
||||
IOCTL(FS_IOC_SETFLAGS, IOC_W, MK_PTR(TYPE_INT))
|
||||
|
||||
#ifdef CONFIG_USBFS
|
||||
/* USB ioctls */
|
||||
IOCTL(USBDEVFS_CONTROL, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_ctrltransfer)))
|
||||
IOCTL(USBDEVFS_BULK, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_bulktransfer)))
|
||||
IOCTL(USBDEVFS_RESETEP, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_SETINTERFACE, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_setinterface)))
|
||||
IOCTL(USBDEVFS_SETCONFIGURATION, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_GETDRIVER, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_getdriver)))
|
||||
IOCTL(USBDEVFS_DISCSIGNAL, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_disconnectsignal)))
|
||||
IOCTL(USBDEVFS_CLAIMINTERFACE, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_RELEASEINTERFACE, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_CONNECTINFO, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_connectinfo)))
|
||||
IOCTL(USBDEVFS_IOCTL, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_usbdevfs_ioctl)))
|
||||
IOCTL(USBDEVFS_HUB_PORTINFO, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_hub_portinfo)))
|
||||
IOCTL(USBDEVFS_RESET, 0, TYPE_NULL)
|
||||
IOCTL(USBDEVFS_CLEAR_HALT, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_DISCONNECT, 0, TYPE_NULL)
|
||||
IOCTL(USBDEVFS_CONNECT, 0, TYPE_NULL)
|
||||
IOCTL(USBDEVFS_CLAIM_PORT, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_RELEASE_PORT, IOC_W, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_GET_CAPABILITIES, IOC_R, MK_PTR(TYPE_INT))
|
||||
IOCTL(USBDEVFS_DISCONNECT_CLAIM, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_usbdevfs_disconnect_claim)))
|
||||
#ifdef USBDEVFS_DROP_PRIVILEGES
|
||||
IOCTL(USBDEVFS_DROP_PRIVILEGES, IOC_W, MK_PTR(TYPE_INT))
|
||||
#endif
|
||||
#ifdef USBDEVFS_GET_SPEED
|
||||
IOCTL(USBDEVFS_GET_SPEED, 0, TYPE_NULL)
|
||||
#endif
|
||||
#endif /* CONFIG_USBFS */
|
||||
|
||||
IOCTL(SIOCATMARK, IOC_R, MK_PTR(TYPE_INT))
|
||||
IOCTL(SIOCGIFNAME, IOC_RW, MK_PTR(TYPE_INT))
|
||||
IOCTL(SIOCGIFFLAGS, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_short_ifreq)))
|
||||
|
@ -94,6 +94,9 @@
|
||||
#include <linux/fiemap.h>
|
||||
#endif
|
||||
#include <linux/fb.h>
|
||||
#if defined(CONFIG_USBFS)
|
||||
#include <linux/usbdevice_fs.h>
|
||||
#endif
|
||||
#include <linux/vt.h>
|
||||
#include <linux/dm-ioctl.h>
|
||||
#include <linux/reboot.h>
|
||||
|
@ -863,6 +863,30 @@ struct target_pollfd {
|
||||
|
||||
#define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap)
|
||||
|
||||
/* usb ioctls */
|
||||
#define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0)
|
||||
#define TARGET_USBDEVFS_BULK TARGET_IOWRU('U', 2)
|
||||
#define TARGET_USBDEVFS_RESETEP TARGET_IORU('U', 3)
|
||||
#define TARGET_USBDEVFS_SETINTERFACE TARGET_IORU('U', 4)
|
||||
#define TARGET_USBDEVFS_SETCONFIGURATION TARGET_IORU('U', 5)
|
||||
#define TARGET_USBDEVFS_GETDRIVER TARGET_IOWU('U', 8)
|
||||
#define TARGET_USBDEVFS_DISCSIGNAL TARGET_IORU('U', 14)
|
||||
#define TARGET_USBDEVFS_CLAIMINTERFACE TARGET_IORU('U', 15)
|
||||
#define TARGET_USBDEVFS_RELEASEINTERFACE TARGET_IORU('U', 16)
|
||||
#define TARGET_USBDEVFS_CONNECTINFO TARGET_IOWU('U', 17)
|
||||
#define TARGET_USBDEVFS_IOCTL TARGET_IOWRU('U', 18)
|
||||
#define TARGET_USBDEVFS_HUB_PORTINFO TARGET_IORU('U', 19)
|
||||
#define TARGET_USBDEVFS_RESET TARGET_IO('U', 20)
|
||||
#define TARGET_USBDEVFS_CLEAR_HALT TARGET_IORU('U', 21)
|
||||
#define TARGET_USBDEVFS_DISCONNECT TARGET_IO('U', 22)
|
||||
#define TARGET_USBDEVFS_CONNECT TARGET_IO('U', 23)
|
||||
#define TARGET_USBDEVFS_CLAIM_PORT TARGET_IORU('U', 24)
|
||||
#define TARGET_USBDEVFS_RELEASE_PORT TARGET_IORU('U', 25)
|
||||
#define TARGET_USBDEVFS_GET_CAPABILITIES TARGET_IORU('U', 26)
|
||||
#define TARGET_USBDEVFS_DISCONNECT_CLAIM TARGET_IORU('U', 27)
|
||||
#define TARGET_USBDEVFS_DROP_PRIVILEGES TARGET_IOWU('U', 30)
|
||||
#define TARGET_USBDEVFS_GET_SPEED TARGET_IO('U', 31)
|
||||
|
||||
/* cdrom commands */
|
||||
#define TARGET_CDROMPAUSE 0x5301 /* Pause Audio Operation */
|
||||
#define TARGET_CDROMRESUME 0x5302 /* Resume paused Audio Operation */
|
||||
|
@ -266,3 +266,51 @@ STRUCT(blkpg_ioctl_arg,
|
||||
TYPE_INT, /* flags */
|
||||
TYPE_INT, /* datalen */
|
||||
TYPE_PTRVOID) /* data */
|
||||
|
||||
#if defined(CONFIG_USBFS)
|
||||
/* usb device ioctls */
|
||||
STRUCT(usbdevfs_ctrltransfer,
|
||||
TYPE_CHAR, /* bRequestType */
|
||||
TYPE_CHAR, /* bRequest */
|
||||
TYPE_SHORT, /* wValue */
|
||||
TYPE_SHORT, /* wIndex */
|
||||
TYPE_SHORT, /* wLength */
|
||||
TYPE_INT, /* timeout */
|
||||
TYPE_PTRVOID) /* data */
|
||||
|
||||
STRUCT(usbdevfs_bulktransfer,
|
||||
TYPE_INT, /* ep */
|
||||
TYPE_INT, /* len */
|
||||
TYPE_INT, /* timeout */
|
||||
TYPE_PTRVOID) /* data */
|
||||
|
||||
STRUCT(usbdevfs_setinterface,
|
||||
TYPE_INT, /* interface */
|
||||
TYPE_INT) /* altsetting */
|
||||
|
||||
STRUCT(usbdevfs_disconnectsignal,
|
||||
TYPE_INT, /* signr */
|
||||
TYPE_PTRVOID) /* context */
|
||||
|
||||
STRUCT(usbdevfs_getdriver,
|
||||
TYPE_INT, /* interface */
|
||||
MK_ARRAY(TYPE_CHAR, USBDEVFS_MAXDRIVERNAME + 1)) /* driver */
|
||||
|
||||
STRUCT(usbdevfs_connectinfo,
|
||||
TYPE_INT, /* devnum */
|
||||
TYPE_CHAR) /* slow */
|
||||
|
||||
STRUCT(usbdevfs_ioctl,
|
||||
TYPE_INT, /* ifno */
|
||||
TYPE_INT, /* ioctl_code */
|
||||
TYPE_PTRVOID) /* data */
|
||||
|
||||
STRUCT(usbdevfs_hub_portinfo,
|
||||
TYPE_CHAR, /* nports */
|
||||
MK_ARRAY(TYPE_CHAR, 127)) /* port */
|
||||
|
||||
STRUCT(usbdevfs_disconnect_claim,
|
||||
TYPE_INT, /* interface */
|
||||
TYPE_INT, /* flags */
|
||||
MK_ARRAY(TYPE_CHAR, USBDEVFS_MAXDRIVERNAME + 1)) /* driver */
|
||||
#endif /* CONFIG_USBFS */
|
||||
|
Loading…
Reference in New Issue
Block a user