summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2012-10-10 10:21:20 +0200
committerJunfeng Dong <junfeng.dong@intel.com>2013-11-19 18:57:38 +0800
commit1821633a9aa46ea9fc18a543e0114a13b4f7e74b (patch)
tree4640b8a23fea573122b2264049fc9cac3b5ac374
parentd261962d5428204a31d7dc4c0737183c6dc52ed5 (diff)
downloadqemu-1821633a9aa46ea9fc18a543e0114a13b4f7e74b.tar.gz
qemu-1821633a9aa46ea9fc18a543e0114a13b4f7e74b.tar.bz2
qemu-1821633a9aa46ea9fc18a543e0114a13b4f7e74b.zip
linux-user: add more blk ioctls
Implement a few more ioctls that operate on block devices. Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r--linux-user/ioctls.h18
-rw-r--r--linux-user/syscall_defs.h6
-rw-r--r--linux-user/syscall_types.h3
3 files changed, 27 insertions, 0 deletions
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index a77b72c38..4c6d2ee5b 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -71,6 +71,24 @@
#ifdef BLKGETSIZE64
IOCTL(BLKGETSIZE64, IOC_R, MK_PTR(TYPE_ULONGLONG))
#endif
+#ifdef BLKDISCARD
+ IOCTL(BLKDISCARD, IOC_W, MK_PTR(MK_STRUCT(STRUCT_blkdiscard)))
+#endif
+#ifdef BLKIOMIN
+ IOCTL(BLKIOMIN, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKIOOPT
+ IOCTL(BLKIOOPT, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKALIGNOFF
+ IOCTL(BLKALIGNOFF, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKPBSZGET
+ IOCTL(BLKPBSZGET, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKDISCARDZEROES
+ IOCTL(BLKDISCARDZEROES, IOC_R, MK_PTR(TYPE_INT))
+#endif
IOCTL(BLKFLSBUF, 0, TYPE_NULL)
IOCTL(BLKRASET, 0, TYPE_INT)
IOCTL(BLKRAGET, IOC_R, MK_PTR(TYPE_LONG))
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index bbcdec279..5aeb3dd00 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -889,6 +889,12 @@ struct target_pollfd {
#define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,abi_ulong)
/* return device size in bytes
(u64 *arg) */
+#define TARGET_BLKDISCARD TARGET_IO(0x12,119)
+#define TARGET_BLKIOMIN TARGET_IO(0x12,120)
+#define TARGET_BLKIOOPT TARGET_IO(0x12,121)
+#define TARGET_BLKALIGNOFF TARGET_IO(0x12,122)
+#define TARGET_BLKPBSZGET TARGET_IO(0x12,123)
+#define TARGET_BLKDISCARDZEROES TARGET_IO(0x12,124)
#define TARGET_FIBMAP TARGET_IO(0x00,1) /* bmap access */
#define TARGET_FIGETBSZ TARGET_IO(0x00,2) /* get the block size used for bmap */
#define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap)
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index 7897e37a6..dd78619a2 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -71,6 +71,9 @@ STRUCT(kbentry,
STRUCT(kbsentry,
TYPE_CHAR, MK_ARRAY(TYPE_CHAR, 512))
+STRUCT(blkdiscard,
+ MK_ARRAY(TYPE_LONGLONG, 2))
+
STRUCT(audio_buf_info,
TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT)