[alsa-devel] [RFC][PATCH] fall back to reserved minor numbers
Takashi Iwai
tiwai at suse.de
Fri May 14 10:17:27 CEST 2010
At Fri, 14 May 2010 11:28:28 +0800,
Wu Fengguang wrote:
>
> When the static minor numbers collide because of too many devices,
> fall back to the reserved minor numbers 2 and 3.
>
> This for example will allow Intel HDMI audio driver to create three PCM
> devices (index 3, 7, 8; the minor number of the last index will
> otherwise collide with the first record device).
>
> The other option is to force enable CONFIG_SND_DYNAMIC_MINORS.
>
> Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
Well, frankly, I don't see a big merit of doing this.
Most (all?) 2.6-based distros are using udev, thus
CONFIG_SND_DYNAMIC_MINORS should be used there. The rest is for old
distros or for some limited systems like embedded devices, and they
won't need so much PCM devices.
Even if we do this, it doesn't make sense unless the user-space side
creates the corresponding device node.
thanks,
Takashi
> ---
> include/sound/minors.h | 4 +++-
> sound/core/sound.c | 10 ++++++++--
> 2 files changed, 11 insertions(+), 3 deletions(-)
>
> --- drm-intel.orig/include/sound/minors.h 2010-05-13 10:06:52.000000000 +0800
> +++ drm-intel/include/sound/minors.h 2010-05-13 10:10:06.000000000 +0800
> @@ -35,7 +35,9 @@
> #define SNDRV_MINOR_TIMER (SNDRV_MINOR_GLOBAL + 1 * 32)
>
> #ifndef CONFIG_SND_DYNAMIC_MINORS
> - /* 2 - 3 (reserved) */
> +
> +#define SNDRV_MINOR_BACKUP1 2
> +#define SNDRV_MINOR_BACKUP2 3
> #define SNDRV_MINOR_HWDEP 4 /* 4 - 7 */
> #define SNDRV_MINOR_RAWMIDI 8 /* 8 - 15 */
> #define SNDRV_MINOR_PCM_PLAYBACK 16 /* 16 - 23 */
> --- drm-intel.orig/sound/core/sound.c 2010-05-13 10:06:04.000000000 +0800
> +++ drm-intel/sound/core/sound.c 2010-05-13 10:11:19.000000000 +0800
> @@ -269,8 +269,14 @@ int snd_register_device_for_dev(int type
> minor = snd_find_free_minor();
> #else
> minor = snd_kernel_minor(type, card, dev);
> - if (minor >= 0 && snd_minors[minor])
> - minor = -EBUSY;
> + if (minor >= 0) {
> + if (snd_minors[minor])
> + minor = SNDRV_MINOR_BACKUP1;
> + if (snd_minors[minor])
> + minor = SNDRV_MINOR_BACKUP2;
> + if (snd_minors[minor])
> + minor = -EBUSY;
> + }
> #endif
> if (minor < 0) {
> mutex_unlock(&sound_mutex);
>
More information about the Alsa-devel
mailing list