[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