Handle some ALSA ioctls that don't have size or direction hints.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5131 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c
index 0612174..6bce26d 100644
--- a/coregrind/m_syswrap/syswrap-generic.c
+++ b/coregrind/m_syswrap/syswrap-generic.c
@@ -3472,6 +3472,23 @@
    case VKI_SNDCTL_DSP_SETDUPLEX:
       break;
 
+      /* linux/soundcard interface (ALSA) */
+   case VKI_SNDRV_PCM_IOCTL_HW_FREE:
+   case VKI_SNDRV_PCM_IOCTL_HWSYNC:
+   case VKI_SNDRV_PCM_IOCTL_PREPARE:
+   case VKI_SNDRV_PCM_IOCTL_RESET:
+   case VKI_SNDRV_PCM_IOCTL_START:
+   case VKI_SNDRV_PCM_IOCTL_DROP:
+   case VKI_SNDRV_PCM_IOCTL_DRAIN:
+   case VKI_SNDRV_PCM_IOCTL_RESUME:
+   case VKI_SNDRV_PCM_IOCTL_XRUN:
+   case VKI_SNDRV_PCM_IOCTL_UNLINK:
+   case VKI_SNDRV_TIMER_IOCTL_START:
+   case VKI_SNDRV_TIMER_IOCTL_STOP:
+   case VKI_SNDRV_TIMER_IOCTL_CONTINUE:
+   case VKI_SNDRV_TIMER_IOCTL_PAUSE:
+      break;
+
       /* Real Time Clock (/dev/rtc) ioctls */
    case VKI_RTC_UIE_ON:
    case VKI_RTC_UIE_OFF:
@@ -4154,6 +4171,23 @@
    case VKI_SNDCTL_DSP_SETDUPLEX:
       break;
 
+      /* linux/soundcard interface (ALSA) */
+   case VKI_SNDRV_PCM_IOCTL_HW_FREE:
+   case VKI_SNDRV_PCM_IOCTL_HWSYNC:
+   case VKI_SNDRV_PCM_IOCTL_PREPARE:
+   case VKI_SNDRV_PCM_IOCTL_RESET:
+   case VKI_SNDRV_PCM_IOCTL_START:
+   case VKI_SNDRV_PCM_IOCTL_DROP:
+   case VKI_SNDRV_PCM_IOCTL_DRAIN:
+   case VKI_SNDRV_PCM_IOCTL_RESUME:
+   case VKI_SNDRV_PCM_IOCTL_XRUN:
+   case VKI_SNDRV_PCM_IOCTL_UNLINK:
+   case VKI_SNDRV_TIMER_IOCTL_START:
+   case VKI_SNDRV_TIMER_IOCTL_STOP:
+   case VKI_SNDRV_TIMER_IOCTL_CONTINUE:
+   case VKI_SNDRV_TIMER_IOCTL_PAUSE:
+      break;
+
       /* Real Time Clock (/dev/rtc) ioctls */
    case VKI_RTC_UIE_ON:
    case VKI_RTC_UIE_OFF:
diff --git a/include/vki-linux.h b/include/vki-linux.h
index f611523..dfeb35b 100644
--- a/include/vki-linux.h
+++ b/include/vki-linux.h
@@ -2066,6 +2066,30 @@
 
 #define VKI_PTRACE_DETACH       0x11
 
+//----------------------------------------------------------------------
+// From linux-2.6.14/include/sound/asound.h
+//----------------------------------------------------------------------
+
+enum {
+	VKI_SNDRV_PCM_IOCTL_HW_FREE = _VKI_IO('A', 0x12),
+	VKI_SNDRV_PCM_IOCTL_HWSYNC = _VKI_IO('A', 0x22),
+	VKI_SNDRV_PCM_IOCTL_PREPARE = _VKI_IO('A', 0x40),
+	VKI_SNDRV_PCM_IOCTL_RESET = _VKI_IO('A', 0x41),
+	VKI_SNDRV_PCM_IOCTL_START = _VKI_IO('A', 0x42),
+	VKI_SNDRV_PCM_IOCTL_DROP = _VKI_IO('A', 0x43),
+	VKI_SNDRV_PCM_IOCTL_DRAIN = _VKI_IO('A', 0x44),
+	VKI_SNDRV_PCM_IOCTL_RESUME = _VKI_IO('A', 0x47),
+	VKI_SNDRV_PCM_IOCTL_XRUN = _VKI_IO('A', 0x48),
+	VKI_SNDRV_PCM_IOCTL_UNLINK = _VKI_IO('A', 0x61),
+};
+
+enum {
+	VKI_SNDRV_TIMER_IOCTL_START = _VKI_IO('T', 0xa0),
+	VKI_SNDRV_TIMER_IOCTL_STOP = _VKI_IO('T', 0xa1),
+	VKI_SNDRV_TIMER_IOCTL_CONTINUE = _VKI_IO('T', 0xa2),
+	VKI_SNDRV_TIMER_IOCTL_PAUSE = _VKI_IO('T', 0xa3),
+};
+
 #endif // __VKI_LINUX_H
 
 /*--------------------------------------------------------------------*/