[alsa-devel] [PATCH] ALSA: snd-aloop: make preallocated buffer size configurable
Takashi Iwai
tiwai at suse.de
Wed Sep 21 14:10:21 CEST 2011
At Tue, 20 Sep 2011 14:02:12 -0500,
Pierre-Louis Bossart wrote:
>
> Default of 2MB of physically-contiguous memory can be
> too high for embedded solutions, make the size configurable.
Hm, maybe better to have an option for global limit of preallocation?
The problem is not necessarily specific to snd-aloop.
thanks,
Takashi
>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> ---
> sound/drivers/Kconfig | 15 +++++++++++++++
> sound/drivers/aloop.c | 6 +++---
> 2 files changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/sound/drivers/Kconfig b/sound/drivers/Kconfig
> index c896116..ad51067 100644
> --- a/sound/drivers/Kconfig
> +++ b/sound/drivers/Kconfig
> @@ -93,6 +93,21 @@ config SND_ALOOP
> To compile this driver as a module, choose M here: the module
> will be called snd-aloop.
>
> +if SND_ALOOP
> +config SND_ALOOP_PREALLOC_SIZE
> + int "Pre-allocated buffer size for aloop driver"
> + range 0 32768
> + default 2048
> + help
> + Specifies the default pre-allocated buffer-size in kB for the
> + snd-aloop driver. The default 2048 is chosen just
> + for compatibility reasons. Some distributions may want to
> + use a smaller size when only one stream is used.
> +
> + Note that the pre-allocation size can be changed dynamically
> + via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too.
> +endif
> +
> config SND_VIRMIDI
> tristate "Virtual MIDI soundcard"
> depends on SND_SEQUENCER
> diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c
> index a0da775..f945573 100644
> --- a/sound/drivers/aloop.c
> +++ b/sound/drivers/aloop.c
> @@ -556,11 +556,11 @@ static struct snd_pcm_hardware loopback_pcm_hardware =
> .rate_max = 192000,
> .channels_min = 1,
> .channels_max = 32,
> - .buffer_bytes_max = 2 * 1024 * 1024,
> + .buffer_bytes_max = CONFIG_SND_ALOOP_PREALLOC_SIZE * 1024,
> .period_bytes_min = 64,
> /* note check overflow in frac_pos() using pcm_rate_shift before
> changing period_bytes_max value */
> - .period_bytes_max = 1024 * 1024,
> + .period_bytes_max = CONFIG_SND_ALOOP_PREALLOC_SIZE * 1024,
> .periods_min = 1,
> .periods_max = 1024,
> .fifo_size = 0,
> @@ -774,7 +774,7 @@ static int __devinit loopback_pcm_new(struct loopback *loopback,
>
> snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS,
> snd_dma_continuous_data(GFP_KERNEL),
> - 0, 2 * 1024 * 1024);
> + 0, CONFIG_SND_ALOOP_PREALLOC_SIZE * 1024);
> return 0;
> }
>
> --
> 1.7.6
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
More information about the Alsa-devel
mailing list