mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
Some ioctls don't look at ARG3 at all. Based on patches from Clemens
Ladisch. Fixes bug 159501. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10441
This commit is contained in:
parent
5715955132
commit
00057df2c4
@ -3323,6 +3323,40 @@ PRE(sys_ioctl)
|
||||
PRE_REG_READ3(long, "ioctl",
|
||||
unsigned int, fd, unsigned int, request, unsigned long, arg);
|
||||
|
||||
// We first handle the ones that don't use ARG3 (even as a
|
||||
// scalar/non-pointer argument).
|
||||
switch (ARG2 /* request */) {
|
||||
|
||||
/* 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:
|
||||
PRINT("sys_ioctl ( %d, 0x%x )",ARG1,ARG2);
|
||||
PRE_REG_READ2(long, "ioctl",
|
||||
unsigned int, fd, unsigned int, request);
|
||||
return;
|
||||
|
||||
default:
|
||||
PRINT("sys_ioctl ( %d, 0x%x, %p )",ARG1,ARG2,ARG3);
|
||||
PRE_REG_READ3(long, "ioctl",
|
||||
unsigned int, fd, unsigned int, request, unsigned long, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
// We now handle those that do look at ARG3 (and unknown ones fall into
|
||||
// this category). Nb: some of these may well belong in the
|
||||
// doesn't-use-ARG3 switch above.
|
||||
switch (ARG2 /* request */) {
|
||||
case VKI_TCSETS:
|
||||
case VKI_TCSETSW:
|
||||
@ -3718,20 +3752,9 @@ PRE(sys_ioctl)
|
||||
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:
|
||||
case VKI_SNDRV_PCM_IOCTL_PAUSE:
|
||||
case VKI_SNDRV_PCM_IOCTL_LINK:
|
||||
/* these just take an int by value */
|
||||
break;
|
||||
|
||||
/* Real Time Clock (/dev/rtc) ioctls */
|
||||
|
||||
@ -2134,8 +2134,10 @@ enum {
|
||||
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_PAUSE = _VKI_IOW('A', 0x45, int),
|
||||
VKI_SNDRV_PCM_IOCTL_RESUME = _VKI_IO('A', 0x47),
|
||||
VKI_SNDRV_PCM_IOCTL_XRUN = _VKI_IO('A', 0x48),
|
||||
VKI_SNDRV_PCM_IOCTL_LINK = _VKI_IOW('A', 0x60, int),
|
||||
VKI_SNDRV_PCM_IOCTL_UNLINK = _VKI_IO('A', 0x61),
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user