[alsa-devel] question on snd minors

Takashi Iwai tiwai at suse.de
Tue Nov 15 09:11:26 CET 2011


At Tue, 15 Nov 2011 13:15:39 +0530,
Vinod Koul wrote:
> 
> On Tue, 2011-11-15 at 07:39 +0100, Takashi Iwai wrote:
> > At Tue, 15 Nov 2011 09:39:23 +0530,
> > Vinod Koul wrote:
> > > 
> > > Hi,
> > > 
> > > for the compressed path work I had a question regarding the minor
> > > numbers.
> > >  
> > > Looks like we have 32 minors (5 bits) and going by current table there
> > > is no space for new devices.
> > > So should i increase the number to 64 (6bits), add compressed playback
> > > and capture devices as 32-39, 40-48 respectively and keep rest as
> > > reserved, or would you like it to be kept 32 and realign the table?
> > 
> > For the large number of concurrent accesses, we usually take an
> > approach with sub-streams instead of scattering too many device
> > files.
> Perhaps I should have worded my question better :)
> 
> For compressed path (i had posted RFC roughly two months back [1]), we
> are creating new devices /dev/snd/comprCxDxp which would be registered
> as SNDRV_DEV_COMPRESS. For the registration part we need to assign the
> minors, right? Hence the above question
> 
> Or did I miss something very obvious here...

Yes, take a look at PCM devices, for example.  They have sub-streams.
So, you can open a single device file multiple times to assign
multiple sub-streams.  If any specific substream with a given index is
needed, it can be specified via ioctl before open.  Otherwise, the
next empty substream is assigned.

The similar implementation is found in rawmidi, too.


Takashi


> This is how I wrote it now, I wanted to run this with you folks first
> 
> diff --git a/include/sound/core.h b/include/sound/core.h
> index 1fa2407..9d1e54b 100644
> --- a/include/sound/core.h
> +++ b/include/sound/core.h
> @@ -62,6 +62,7 @@ typedef int __bitwise snd_device_type_t;
>  #define        SNDRV_DEV_BUS           ((__force snd_device_type_t) 0x1007)
>  #define        SNDRV_DEV_CODEC         ((__force snd_device_type_t) 0x1008)
>  #define        SNDRV_DEV_JACK          ((__force snd_device_type_t) 0x1009)
> +#define        SNDRV_DEV_COMPRESS      ((__force snd_device_type_t) 0x100A)
>  #define        SNDRV_DEV_LOWLEVEL      ((__force snd_device_type_t) 0x2000)
>  
>  typedef int __bitwise snd_device_state_t;
> diff --git a/include/sound/minors.h b/include/sound/minors.h
> index 8f76420..ffa6001 100644
> --- a/include/sound/minors.h
> +++ b/include/sound/minors.h
> @@ -23,10 +23,10 @@
>  
>  #define SNDRV_OS_MINORS                        256
>  
> -#define SNDRV_MINOR_DEVICES            32
> -#define SNDRV_MINOR_CARD(minor)                ((minor) >> 5)
> -#define SNDRV_MINOR_DEVICE(minor)      ((minor) & 0x001f)
> -#define SNDRV_MINOR(card, dev)         (((card) << 5) | (dev))
> +#define SNDRV_MINOR_DEVICES            64
> +#define SNDRV_MINOR_CARD(minor)                ((minor) >> 6)
> +#define SNDRV_MINOR_DEVICE(minor)      ((minor) & 0x003f)
> +#define SNDRV_MINOR(card, dev)         (((card) << 6) | (dev))
>  
>  /* these minors can still be used for autoloading devices (/dev/aload*) */
>  #define SNDRV_MINOR_CONTROL            0       /* 0 */
> @@ -40,6 +40,8 @@
>  #define SNDRV_MINOR_RAWMIDI            8       /* 8 - 15 */
>  #define SNDRV_MINOR_PCM_PLAYBACK       16      /* 16 - 23 */
>  #define SNDRV_MINOR_PCM_CAPTURE                24      /* 24 - 31 */
> +#define SNDRV_MINOR_COMPR_PLAYBACK     32      /* 32 - 35 */
> +#define SNDRV_MINOR_COMPR_CAPTURE      36      /* 36 - 39 */
> 
> 
> 
> -- 
> ~Vinod
> 
> 1:
> http://mailman.alsa-project.org/pipermail/alsa-devel/2011-September/043408.html
> 


More information about the Alsa-devel mailing list