我的策略往往会混淆一些ioctl值(我确信SNDRV ioctls不能很好地识别...)
如何识别正确的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的宏扩展是什么……
谢谢:)
发布于 2013-03-12 21:52:51
正如您在Documentation/ioctl/ioctl-number.txt中看到的,值0x55 ('U')由几个子系统使用。strace不知道设备文件属于几个子系统中的哪一个,并且可能无法识别某些较新的ioctl代码。
最新的strace版本了解SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE。
https://stackoverflow.com/questions/15359277
复制相似问题