[alsa-devel] Have multiple opens removed on one device?

Scott Jiang scott.jiang.linux at gmail.com
Thu Sep 1 05:43:09 CEST 2011

2011/8/29 Scott Jiang <scott.jiang.linux at gmail.com>:
> Indeed we use dmix. But now we can't open the same device twice.
> Our alsa lib and utils version is 1.0.18.
> The test command: aplay 1.wav &; aplay 1.wav
> In 2.6.34, strace
> open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = 4
> open("/dev/snd/pcmC0D0p", O_RDWR|O_APPEND|O_NONBLOCK) = 4
> In 3.0, strace
> open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = 4
> open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = -1 EBUSY (Device or
> resource busy)
> The O_APPEND flag missed in new kernel. But we use the same lib and
> utils. It's strange.
> And I found the prefer subdevice changes from 0 to -1. These two
> changes cause kernel return device busy.
> Mark, can you do this simple test on your board? I appreciate your
> help. Thank you very much.

I know the reason. The card config file didn't read properly.
Asoc doesn't copy codec name to card->driver now. I guess it is
because multiple codecs are supported.
I add driver_name in my snd_soc_card to solve this bug. But I scan
other drivers in asoc, nobody did this.
Maybe nobody are aware of this. Are there any better way to solve this bug?


More information about the Alsa-devel mailing list