[alsa-devel] [PATCH 00/21] ALSA: Remove always NULL parameters

Takashi Iwai tiwai at suse.de
Fri Jan 2 16:35:51 CET 2015


At Fri,  2 Jan 2015 12:24:34 +0100,
Lars-Peter Clausen wrote:
> 
> There is a bit of a anti-pattern in some of the (mostly older) driver. In
> these drivers functions which allocate PCMs, timers, etc. take a parameter
> which is a pointer to a pointer of the allocated object and if the pointer
> is provided it is set to the newly allocate object. The code essentially
> looks like this.
> 
> 	int foobar_allocate(..., struct snd_pcm **rpcm)
> 	{
> 		struct snd_pcm *pcm;
> 		
> 		if (rpcm)
> 			*rpcm = NULL;
> 
> 		... /* Create and initialize object */
> 
> 		if (rpcm)
> 			*rpcm = pcm;
> 
> 		return 0;
> 	}
> 
> But then all callers to these functions always pass NULL for the pointer. So
> the code that checks and initializes the pointer becomes dead code. While it
> can be argued that such a pattern makes sense for library functions where
> there might be new users which want to provide a valid pointer (at least in
> the absence of PTR_ERR and friends), it makes less sense for functions that
> are only used internally in a driver which hasn't seen any new hardware
> support in the last 10 years.
> 
> This series goes through these drivers and removes the pointer parameter
> from functions which follow this pattern.
> 
> There is one exception which is the wss driver, which is kind of a library
> driver, where some of the users actually pass a valid pointer. But the same
> PCM object that is stored in that pointer can also be accessed through the
> wss chip state struct. So that driver is update as well.
> 
> - Lars
> 
> Lars-Peter Clausen (21):
>   ALSA: ml403-ac97cr: Remove always NULL parameter
>   ALSA: ad1816a: Remove always NULL parameters
>   ALSA: es1688: Remove almost always NULL parameter
>   ALSA: es18xx: Remove always NULL parameter
>   ALSA: gus: Remove always NULL parameters
>   ALSA: msnd: Remove always NULL parameter
>   ALSA: sb8: Remove always NULL parameters
>   ASoC: sb16: Simplify snd_sb16dsp_pcm()
>   ALSA: wss: Remove (almost) always NULL parameters
>   ASLA: ad1889: Remove always NULL parameter
>   ALSA: asihpi: Remove always NULL parameter
>   ALSA: cs4281: Remove always NULL parameters
>   ALSA: cs46xx: Remove always NULL parameters
>   ALSA: ens1370: Remove always NULL parameters
>   ALSA: emu10k1: Remove always NULL parameters
>   ALSA: fm801: Remove always NULL parameter
>   ALSA: ice1712: Remove always NULL parameters
>   ALSA: riptide: Remove always NULL parameter
>   ALSA: sonicvibes: Remove always NULL parameter
>   ALSA: trident: Remove always NULL parameters
>   ALSA: ymfpci: Remove always NULL parameters

All look fine to me, so I applied them now.

Thanks!

Takashi


> 
>  include/sound/ad1816a.h            |  5 ++---
>  include/sound/emu10k1.h            | 14 ++++++-------
>  include/sound/es1688.h             |  3 +--
>  include/sound/gus.h                |  4 ++--
>  include/sound/sb.h                 |  6 +++---
>  include/sound/wss.h                |  6 +++---
>  sound/drivers/ml403-ac97cr.c       |  9 ++-------
>  sound/isa/ad1816a/ad1816a.c        |  5 ++---
>  sound/isa/ad1816a/ad1816a_lib.c    |  9 ++-------
>  sound/isa/ad1848/ad1848.c          |  7 +++----
>  sound/isa/als100.c                 |  2 +-
>  sound/isa/azt2320.c                |  4 ++--
>  sound/isa/cmi8328.c                |  4 ++--
>  sound/isa/cs423x/cs4231.c          |  9 ++++-----
>  sound/isa/cs423x/cs4236.c          | 13 ++++++-------
>  sound/isa/cs423x/cs4236_lib.c      |  9 +++------
>  sound/isa/es1688/es1688.c          |  7 +++----
>  sound/isa/es1688/es1688_lib.c      |  6 +-----
>  sound/isa/es18xx.c                 | 10 ++--------
>  sound/isa/galaxy/galaxy.c          |  4 ++--
>  sound/isa/gus/gus_pcm.c            |  6 +-----
>  sound/isa/gus/gus_uart.c           |  6 +-----
>  sound/isa/gus/gusclassic.c         |  4 ++--
>  sound/isa/gus/gusextreme.c         |  4 ++--
>  sound/isa/gus/gusmax.c             |  8 ++++----
>  sound/isa/gus/interwave.c          | 14 ++++++-------
>  sound/isa/msnd/msnd.c              |  6 +-----
>  sound/isa/msnd/msnd.h              |  2 +-
>  sound/isa/msnd/msnd_pinnacle.c     |  2 +-
>  sound/isa/opl3sa2.c                |  4 ++--
>  sound/isa/opti9xx/miro.c           | 12 +++++-------
>  sound/isa/opti9xx/opti92x-ad1848.c | 13 +++++--------
>  sound/isa/sb/jazz16.c              |  2 +-
>  sound/isa/sb/sb16.c                |  2 +-
>  sound/isa/sb/sb16_main.c           |  8 ++------
>  sound/isa/sb/sb8.c                 |  4 ++--
>  sound/isa/sb/sb8_main.c            |  6 +-----
>  sound/isa/sb/sb8_midi.c            |  6 +-----
>  sound/isa/sc6000.c                 |  2 +-
>  sound/isa/sscape.c                 |  5 ++---
>  sound/isa/wavefront/wavefront.c    |  4 ++--
>  sound/isa/wss/wss_lib.c            |  8 ++------
>  sound/pci/ad1889.c                 | 10 ++--------
>  sound/pci/asihpi/asihpi.c          |  9 ++-------
>  sound/pci/cs4281.c                 | 18 ++++-------------
>  sound/pci/cs46xx/cs46xx.c          | 10 +++++-----
>  sound/pci/cs46xx/cs46xx.h          | 10 +++++-----
>  sound/pci/cs46xx/cs46xx_lib.c      | 40 +++++---------------------------------
>  sound/pci/cs5530.c                 |  2 +-
>  sound/pci/emu10k1/emu10k1.c        | 12 ++++++------
>  sound/pci/emu10k1/emu10k1x.c       | 19 +++++-------------
>  sound/pci/emu10k1/emufx.c          |  7 +------
>  sound/pci/emu10k1/emupcm.c         | 33 ++++---------------------------
>  sound/pci/emu10k1/p16v.c           |  7 +------
>  sound/pci/ens1370.c                | 37 ++++++++---------------------------
>  sound/pci/fm801.c                  | 14 +++----------
>  sound/pci/ice1712/ice1712.c        | 26 ++++++-------------------
>  sound/pci/riptide/riptide.c        |  9 ++-------
>  sound/pci/sonicvibes.c             |  7 ++-----
>  sound/pci/trident/trident.c        |  6 +++---
>  sound/pci/trident/trident.h        |  6 +++---
>  sound/pci/trident/trident_main.c   | 21 +++-----------------
>  sound/pci/ymfpci/ymfpci.c          |  8 ++++----
>  sound/pci/ymfpci/ymfpci.h          |  8 ++++----
>  sound/pci/ymfpci/ymfpci_main.c     | 38 ++++++------------------------------
>  65 files changed, 185 insertions(+), 436 deletions(-)
> 
> -- 
> 1.8.0
> 


More information about the Alsa-devel mailing list