admin管理员组文章数量:1297121
I am trying to get mixer events from alsa (v1.0.29) in C, but I cannot poll for them, because my card uses ioctl to change values. I am checking for events using amixer sevents
, which correctly gets all controls, but is not aware of events - poll
doesn't work with ioctl
. According to Can we use epoll() to poll on a descriptor which is using ioctl for data transfer, it's driver issue.
# amixer sevents
event add: 'Master',0
event value: 'Master',0
event info: 'master volume',0
event value: 'master volume',0
...
Ready to listen...
# strace amixer -Ddefault cset name='master volume' 10
...
open("/dev/snd/controlC0", O_RDWR|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
ioctl(3, USBDEVFS_CONTROL, 0xbea56374) = 0
ioctl(3, USBDEVFS_CONNECTINFO, 0xbea56748) = 0
ioctl(3, USBDEVFS_IOCTL, 0xbea56440) = 0
ioctl(3, USBDEVFS_HUB_PORTINFO, 0xbea56440) = 0
close(3) = 0
stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9318, ...}) = 0
open("/dev/snd/controlC0", O_RDWR|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
ioctl(3, USBDEVFS_CONTROL, 0xbea5635c) = 0
ioctl(3, USBDEVFS_RELEASEINTERFACE, 0xbea563d8) = 0
ioctl(3, USBDEVFS_RELEASEINTERFACE, 0xbea563d8) = 0
ioctl(3, USBDEVFS_DISCONNECT, 0xbea563c4) = 0
ioctl(3, USBDEVFS_CONNECTINFO, 0xbea56200) = 0
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 30), ...}) = 0
write(1, "numid=10,iface=MIXER,name='maste"..., 42numid=10,iface=MIXER,name='master volume'
) = 42
write(1, " ; type=INTEGER,access=rw------"..., 63 ; type=INTEGER,access=rw------,values=1,min=0,max=120,step=0
) = 63
ioctl(3, USBDEVFS_IOCTL, 0xbea55f38) = 0
write(1, " : values=10\n", 14 : values=10
) = 14
close(3) = 0
<no events in amixer>
My code is identical to amixer sevents
command, so I am using it as example.
/?p=alsa-utils.git;a=blob;f=alsactl/monitor.c;hb=HEAD
Is there another way to be notified of alsa mixer events?
本文标签: epollGetting alsa mixer events on card which uses ioctlStack Overflow
版权声明:本文标题:epoll - Getting alsa mixer events on card which uses ioctl - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741646062a2390190.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论