[alsa-devel] [PATCH] ALSA: Make snd_pcm_debug_name usable outside pcm_lib

Takashi Iwai tiwai at suse.de
Fri Jul 22 12:22:08 CEST 2011


At Fri, 22 Jul 2011 22:05:26 +1200,
linux at audioscience.com wrote:
> 
> From: Eliot Blennerhassett <eblennerhassett at audioscience.com>
> 
> Formatting a PCM name is useful for module debug too.
> Add snd_prefix when making function public.
> 
> Signed-off-by: Eliot Blennerhassett <eblennerhassett at audioscience.com>

It'd need EXPORT_SYMBOL*() in addition.

Or, this can be defined as an inline function.
It's just a call of snprintf() with the passed arguments, after all.


thanks,

Takashi


> ---
>  include/sound/pcm.h       |   12 ++++++++++++
>  sound/core/pcm_lib.c      |   10 +++++-----
>  sound/pci/asihpi/asihpi.c |   21 ---------------------
>  3 files changed, 17 insertions(+), 26 deletions(-)
> 
> diff --git a/include/sound/pcm.h b/include/sound/pcm.h
> index e1bad11..c83c754 100644
> --- a/include/sound/pcm.h
> +++ b/include/sound/pcm.h
> @@ -507,6 +507,18 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream);
>  void snd_pcm_vma_notify_data(void *client, void *data);
>  int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file, struct vm_area_struct *area);
>  
> +
> +#if defined CONFIG_SND_DEBUG
> +void snd_pcm_debug_name(struct snd_pcm_substream *substream,
> +			   char *name, size_t len);
> +#else
> +static inline void
> +snd_pcm_debug_name(struct snd_pcm_substream *substream, char *buf, size_t size)
> +{
> +	*buf = 0;
> +}
> +#endif
> +
>  /*
>   *  PCM library
>   */
> diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
> index f134130..f82329d 100644
> --- a/sound/core/pcm_lib.c
> +++ b/sound/core/pcm_lib.c
> @@ -128,7 +128,7 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram
>  	}
>  }
>  
> -static void pcm_debug_name(struct snd_pcm_substream *substream,
> +void snd_pcm_debug_name(struct snd_pcm_substream *substream,
>  			   char *name, size_t len)
>  {
>  	snprintf(name, len, "pcmC%dD%d%c:%d",
> @@ -168,7 +168,7 @@ static void xrun(struct snd_pcm_substream *substream)
>  	snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
>  	if (xrun_debug(substream, XRUN_DEBUG_BASIC)) {
>  		char name[16];
> -		pcm_debug_name(substream, name, sizeof(name));
> +		snd_pcm_debug_name(substream, name, sizeof(name));
>  		snd_printd(KERN_DEBUG "XRUN: %s\n", name);
>  		dump_stack_on_xrun(substream);
>  	}
> @@ -243,7 +243,7 @@ static void xrun_log_show(struct snd_pcm_substream *substream)
>  		return;
>  	if (xrun_debug(substream, XRUN_DEBUG_LOGONCE) && log->hit)
>  		return;
> -	pcm_debug_name(substream, name, sizeof(name));
> +	snd_pcm_debug_name(substream, name, sizeof(name));
>  	for (cnt = 0, idx = log->idx; cnt < XRUN_LOG_CNT; cnt++) {
>  		entry = &log->entries[idx];
>  		if (entry->period_size == 0)
> @@ -319,7 +319,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
>  	if (pos >= runtime->buffer_size) {
>  		if (printk_ratelimit()) {
>  			char name[16];
> -			pcm_debug_name(substream, name, sizeof(name));
> +			snd_pcm_debug_name(substream, name, sizeof(name));
>  			xrun_log_show(substream);
>  			snd_printd(KERN_ERR  "BUG: %s, pos = %ld, "
>  				   "buffer size = %ld, period size = %ld\n",
> @@ -364,7 +364,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
>  	if (xrun_debug(substream, in_interrupt ?
>  			XRUN_DEBUG_PERIODUPDATE : XRUN_DEBUG_HWPTRUPDATE)) {
>  		char name[16];
> -		pcm_debug_name(substream, name, sizeof(name));
> +		snd_pcm_debug_name(substream, name, sizeof(name));
>  		snd_printd("%s_update: %s: pos=%u/%u/%u, "
>  			   "hwptr=%ld/%ld/%ld/%ld\n",
>  			   in_interrupt ? "period" : "hwptr",
> diff --git a/sound/pci/asihpi/asihpi.c b/sound/pci/asihpi/asihpi.c
> index b941d25..eae62eb 100644
> --- a/sound/pci/asihpi/asihpi.c
> +++ b/sound/pci/asihpi/asihpi.c
> @@ -41,31 +41,10 @@
>  #include <sound/tlv.h>
>  #include <sound/hwdep.h>
>  
> -
>  MODULE_LICENSE("GPL");
>  MODULE_AUTHOR("AudioScience inc. <support at audioscience.com>");
>  MODULE_DESCRIPTION("AudioScience ALSA ASI5000 ASI6000 ASI87xx ASI89xx");
>  
> -#if defined CONFIG_SND_DEBUG
> -/* copied from pcm_lib.c, hope later patch will make that version public
> -and this copy can be removed */
> -static inline void
> -snd_pcm_debug_name(struct snd_pcm_substream *substream, char *buf, size_t size)
> -{
> -	snprintf(buf, size, "pcmC%dD%d%c:%d",
> -		 substream->pcm->card->number,
> -		 substream->pcm->device,
> -		 substream->stream ? 'c' : 'p',
> -		 substream->number);
> -}
> -#else
> -static inline void
> -snd_pcm_debug_name(struct snd_pcm_substream *substream, char *buf, size_t size)
> -{
> -	*buf = 0;
> -}
> -#endif
> -
>  #if defined CONFIG_SND_DEBUG_VERBOSE
>  /**
>   * snd_printddd - very verbose debug printk
> -- 
> 1.7.0.4
> 


More information about the Alsa-devel mailing list