[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 09/12] linux-user: Add support for FDGETFDCSTAT ioctl
From: |
Aleksandar Markovic |
Subject: |
[PATCH v3 09/12] linux-user: Add support for FDGETFDCSTAT ioctl |
Date: |
Fri, 3 Jan 2020 23:17:59 +0100 |
From: Aleksandar Markovic <address@hidden>
FDGETFDCSTAT's third agrument is a pointer to the structure:
struct floppy_fdc_state {
int spec1;
int spec2;
int dtr;
unsigned char version;
unsigned char dor;
unsigned long address;
unsigned int rawcmd:2;
unsigned int reset:1;
unsigned int need_configure:1;
unsigned int perp_mode:2;
unsigned int has_fifo:1;
unsigned int driver_version;
unsigned char track[4];
};
defined in Linux kernel header <linux/fd.h>.
Since there is a fields of the structure of type 'unsigned long', there is
a need to define "target_format_descr". Also, five fields rawcmd, reset,
need_configure, perp_mode, and has_fifo are all just bitfields and are
part od a single 'unsigned int' field.
Signed-off-by: Aleksandar Markovic <address@hidden>
---
linux-user/ioctls.h | 2 ++
linux-user/syscall_defs.h | 18 ++++++++++++++++++
linux-user/syscall_types.h | 12 ++++++++++++
3 files changed, 32 insertions(+)
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 06b1074..060ab28 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -122,6 +122,8 @@
IOCTL(FDSETMAXERRS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_floppy_max_errors)))
IOCTL(FDGETMAXERRS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_floppy_max_errors)))
IOCTL(FDRESET, 0, TYPE_NULL)
+ IOCTL(FDGETFDCSTAT, IOC_R,
+ MK_PTR(MK_STRUCT(STRUCT_target_floppy_fdc_state)))
IOCTL(FDRAWCMD, 0, TYPE_NULL)
IOCTL(FDTWADDLE, 0, TYPE_NULL)
IOCTL(FDEJECT, 0, TYPE_NULL)
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 07e7a74..75604e7 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -897,6 +897,23 @@ struct target_pollfd {
/* From <linux/fd.h> */
+struct target_floppy_fdc_state {
+ int spec1; /* spec1 value last used */
+ int spec2; /* spec2 value last used */
+ int dtr;
+ unsigned char version; /* FDC version code */
+ unsigned char dor;
+ abi_long address; /* io address */
+ unsigned int rawcmd:2;
+ unsigned int reset:1;
+ unsigned int need_configure:1;
+ unsigned int perp_mode:2;
+ unsigned int has_fifo:1;
+ unsigned int driver_version; /* version code for floppy driver */
+ unsigned char track[4];
+};
+
+
#define TARGET_FDMSGON TARGET_IO(2, 0x45)
#define TARGET_FDMSGOFF TARGET_IO(2, 0x46)
#define TARGET_FDFMTBEG TARGET_IO(2, 0x47)
@@ -907,6 +924,7 @@ struct target_pollfd {
#define TARGET_FDSETMAXERRS TARGET_IOW(2, 0x4c, struct floppy_max_errors)
#define TARGET_FDGETMAXERRS TARGET_IOR(2, 0x0e, struct floppy_max_errors)
#define TARGET_FDRESET TARGET_IO(2, 0x54)
+#define TARGET_FDGETFDCSTAT TARGET_IOR(2, 0x15, struct
target_floppy_fdc_state)
#define TARGET_FDRAWCMD TARGET_IO(2, 0x58)
#define TARGET_FDTWADDLE TARGET_IO(2, 0x59)
#define TARGET_FDEJECT TARGET_IO(2, 0x5a)
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index 8ff78a6..a111c61 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -273,6 +273,18 @@ STRUCT(floppy_max_errors,
TYPE_INT, /* recal */
TYPE_INT) /* reporting */
+STRUCT(target_floppy_fdc_state,
+ TYPE_INT, /* spec1 */
+ TYPE_INT, /* spec2 */
+ TYPE_INT, /* dtr */
+ TYPE_CHAR, /* version */
+ TYPE_CHAR, /* dor */
+ TYPE_ULONG, /* address */
+ TYPE_INT, /* bit field for rawcmd:2, reset:1, need_configure:1, */
+ /* perp_mode:2, and has_fifo:1 */
+ TYPE_INT, /* driver_version */
+ MK_ARRAY(TYPE_CHAR, 4)) /* track */
+
#if defined(CONFIG_USBFS)
/* usb device ioctls */
STRUCT(usbdevfs_ctrltransfer,
--
2.7.4
- [PATCH v3 00/12] linux-user: Misc patches for 5.0, Aleksandar Markovic, 2020/01/03
- [PATCH v3 04/12] linux-user: Add support for FS_IOC32_<GET|SET>FLAGS ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 03/12] linux-user: Add support for FS_IOC_<GET|SET>VERSION ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 10/12] configure: Detect kcov support and introduce CONFIG_KCOV, Aleksandar Markovic, 2020/01/03
- [PATCH v3 11/12] linux-user: Add support for KCOV_<ENABLE|DISABLE> ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 06/12] linux-user: Add support for FS_IOC_FS<GET|SET>XATTR ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 07/12] linux-user: Add support for FD<SETEMSGTRESH|SETMAXERRS|GETMAXERRS> ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 02/12] linux-user: mips: Update syscall numbers to kernel 5.5 rc3 level, Aleksandar Markovic, 2020/01/03
- [PATCH v3 08/12] linux-user: Add support for FDFMT<BEG|TRK|END> ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 12/12] linux-user: Add support for KCOV_INIT_TRACE ioctl, Aleksandar Markovic, 2020/01/03
- [PATCH v3 09/12] linux-user: Add support for FDGETFDCSTAT ioctl,
Aleksandar Markovic <=
- [PATCH v3 05/12] linux-user: Add support for FS_IOC32_<GET|SET>VERSION ioctls, Aleksandar Markovic, 2020/01/03
- [PATCH v3 01/12] linux-user: Fix some constants in termbits.h, Aleksandar Markovic, 2020/01/03