[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?

Regards,
Scott


More information about the Alsa-devel mailing list