|
From: <sv...@va...> - 2012-02-10 10:45:46
|
Author: tom
Date: 2012-02-10 10:41:07 +0000 (Fri, 10 Feb 2012)
New Revision: 12375
Log:
Add support for some SCSI ioctls. Patch from Jakub Jelinek on BZ#292627.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2012-02-10 09:39:37 UTC (rev 12374)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2012-02-10 10:41:07 UTC (rev 12375)
@@ -4032,6 +4032,10 @@
case VKI_SNDRV_TIMER_IOCTL_STOP:
case VKI_SNDRV_TIMER_IOCTL_CONTINUE:
case VKI_SNDRV_TIMER_IOCTL_PAUSE:
+
+ /* SCSI no operand */
+ case VKI_SCSI_IOCTL_DOORLOCK:
+ case VKI_SCSI_IOCTL_DOORUNLOCK:
PRINT("sys_ioctl ( %ld, 0x%lx )",ARG1,ARG2);
PRE_REG_READ2(long, "ioctl",
unsigned int, fd, unsigned int, request);
@@ -4517,6 +4521,14 @@
VKI_SIZEOF_STRUCT_HD_DRIVEID );
break;
+ /* SCSI */
+ case VKI_SCSI_IOCTL_GET_IDLUN: /* 0x5382 */
+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_IDLUN)", ARG3, sizeof(struct vki_scsi_idlun));
+ break;
+ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: /* 0x5386 */
+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", ARG3, sizeof(int));
+ break;
+
/* CD ROM stuff (??) */
case VKI_CDROM_GET_MCN:
PRE_MEM_READ( "ioctl(CDROM_GET_MCN)", ARG3,
@@ -5618,6 +5630,10 @@
case VKI_SNDRV_TIMER_IOCTL_STOP:
case VKI_SNDRV_TIMER_IOCTL_CONTINUE:
case VKI_SNDRV_TIMER_IOCTL_PAUSE:
+
+ /* SCSI no operand */
+ case VKI_SCSI_IOCTL_DOORLOCK:
+ case VKI_SCSI_IOCTL_DOORUNLOCK:
break;
/* Real Time Clock (/dev/rtc) ioctls */
@@ -5684,6 +5700,14 @@
POST_MEM_WRITE(ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID );
break;
+ /* SCSI */
+ case VKI_SCSI_IOCTL_GET_IDLUN: /* 0x5382 */
+ POST_MEM_WRITE(ARG3, sizeof(struct vki_scsi_idlun));
+ break;
+ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: /* 0x5386 */
+ POST_MEM_WRITE(ARG3, sizeof(int));
+ break;
+
/* CD ROM stuff (??) */
case VKI_CDROMSUBCHNL:
POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_subchnl));
Modified: trunk/include/vki/vki-linux.h
===================================================================
--- trunk/include/vki/vki-linux.h 2012-02-10 09:39:37 UTC (rev 12374)
+++ trunk/include/vki/vki-linux.h 2012-02-10 10:41:07 UTC (rev 12375)
@@ -1751,6 +1751,20 @@
#define VKI_SG_SET_COMMAND_Q 0x2271 /* Change queuing state with 0 or 1 */
//----------------------------------------------------------------------
+// From linux-2.6.34/include/scsi/scsi.h and scsi/scsi_ioctl.h
+//----------------------------------------------------------------------
+
+#define VKI_SCSI_IOCTL_DOORLOCK 0x5380 /* Lock the eject mechanism. */
+#define VKI_SCSI_IOCTL_DOORUNLOCK 0x5381 /* Unlock the mechanism. */
+#define VKI_SCSI_IOCTL_GET_IDLUN 0x5382
+#define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386
+
+struct vki_scsi_idlun {
+ __vki_u32 dev_id;
+ __vki_u32 host_unique_id;
+};
+
+//----------------------------------------------------------------------
// From linux-2.6.8.1/include/linux/cdrom.h
//----------------------------------------------------------------------
|