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
/*--------------------------------------------------------------------*/