我的strace往往会混淆一些ioctl
值(我确信SNDRV
ioctl不被很好地识别......)
我如何识别正确的ioctl
值?
一个小例子:
$ strace aplay -l
...
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
ioctl(4, UI_DEV_CREATE, 0xbfaa6e74) = 0
close(4) = 0
...
UI_DEV_CREATE
是SNDRV_CTL_IOCTL_CARD_INFO
(另一个例子)
ioctl(4, USBDEVFS_CONTROL or USBDEVFS_CONTROL32, 0xbfaa6f94) = 0
ioctl(4, UI_DEV_CREATE, 0xbfaa71f0) = 0
ioctl(4, 0x80045530, 0xbfaa73ac)
USBDEVFS_CONTROL
是SNDRV_CTL_IOCTL_PVERSION
我真的不知道0x80045530
...
谢谢:)
答案 0 :(得分:2)
正如您在Documentation/ioctl/ioctl-number.txt
中看到的,值0x55('U'
)由多个子系统使用。
strace
不知道设备文件属于哪个子系统,并且可能无法识别某些较新的ioctl代码。
最新的strace
版本了解SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE
。