2013-03-12 50 views
1

我strace的往往混淆了一些ioctl值(我敢肯定的是,SNDRV的ioctl无法识别以及...)strace的打印asound在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_CONTROLSNDRV_CTL_IOCTL_PVERSION ,我真的不知道什么是0x80045530宏扩展...

谢谢:)

回答

2

正如你可以看到Documentation/ioctl/ioctl-number.txt,将值0x55('U')是由几个子系统使用。 strace不知道设备文件属于哪个子系统,可能无法识别一些较新的ioctl代码。

最新的strace版本知道约SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE