[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