mbox series

[00/11] ALSA: procfs cleanups

Message ID 20190204152036.14102-1-tiwai@suse.de (mailing list archive)
Headers show
Series ALSA: procfs cleanups | expand

Message

Takashi Iwai Feb. 4, 2019, 3:20 p.m. UTC
Hi,

this is a patchset for cleaning up the procfs handling.

The first three patches are to remove the superfluous
snd_info_register() calls (which are done eventually at the card
creation time), and the rest patches are for introducing new helpers
and cleaning up with them.  The latter has no functional changes but
only reducing lots of codes.


thanks,

Takashi

===

Takashi Iwai (11):
  ALSA: pcm: Remove superfluous snd_info_register() calls
  ALSA: compress: Remove superfluous snd_info_register() calls
  ALSA: pci: Remove superfluous snd_info_register() calls
  ALSA: info: Add standard helpers for card proc file entries
  ALSA: drivers: Clean up with new procfs helpers
  ALSA: isa: Clean up with new procfs helpers
  ALSA: i2c: Clean up with new procfs helpers
  ALSA: pci: Clean up with new procfs helpers
  ALSA: pcmcia: Clean up with new procfs helpers
  ALSA: sparc: Clean up with new procfs helpers
  ALSA: usb: Clean up with new procfs helpers

 include/sound/info.h                    | 35 ++++++++++++++
 sound/core/compress_offload.c           | 11 +----
 sound/core/info.c                       | 31 +++++++++++++
 sound/core/pcm.c                        | 79 +++++++++++---------------------
 sound/drivers/aloop.c                   | 10 +---
 sound/drivers/dummy.c                   | 10 +---
 sound/drivers/vx/vx_core.c              |  5 +-
 sound/i2c/other/ak4113.c                |  5 +-
 sound/i2c/other/ak4114.c                |  5 +-
 sound/i2c/other/ak4xxx-adda.c           |  8 +---
 sound/isa/gus/gus_irq.c                 |  5 +-
 sound/isa/gus/gus_mem.c                 |  6 +--
 sound/isa/opti9xx/miro.c                |  5 +-
 sound/isa/sb/sb16_csp.c                 |  5 +-
 sound/pci/ac97/ac97_proc.c              | 26 ++++-------
 sound/pci/ad1889.c                      |  6 +--
 sound/pci/ak4531_codec.c                |  5 +-
 sound/pci/ali5451/ali5451.c             |  4 +-
 sound/pci/asihpi/asihpi.c               |  6 +--
 sound/pci/atiixp.c                      |  5 +-
 sound/pci/atiixp_modem.c                |  6 +--
 sound/pci/ca0106/ca0106_proc.c          | 40 ++++++----------
 sound/pci/cmipci.c                      |  5 +-
 sound/pci/cs4281.c                      |  3 +-
 sound/pci/cs46xx/dsp_spos.c             | 16 ++-----
 sound/pci/emu10k1/emu10k1x.c            | 12 ++---
 sound/pci/emu10k1/emuproc.c             | 81 +++++++++++++--------------------
 sound/pci/ens1370.c                     |  6 +--
 sound/pci/hda/hda_proc.c                |  9 +---
 sound/pci/ice1712/ice1712.c             |  5 +-
 sound/pci/ice1712/ice1724.c             |  5 +-
 sound/pci/ice1712/pontis.c              | 12 ++---
 sound/pci/ice1712/prodigy192.c          |  5 +-
 sound/pci/ice1712/prodigy_hifi.c        |  8 +---
 sound/pci/ice1712/quartet.c             |  4 +-
 sound/pci/intel8x0.c                    |  6 +--
 sound/pci/intel8x0m.c                   |  6 +--
 sound/pci/korg1212/korg1212.c           |  6 +--
 sound/pci/lola/lola_proc.c              | 16 ++-----
 sound/pci/lx6464es/lx6464es.c           |  8 +---
 sound/pci/mixart/mixart.c               |  6 +--
 sound/pci/oxygen/oxygen_lib.c           |  5 +-
 sound/pci/pcxhr/pcxhr.c                 | 21 +++------
 sound/pci/riptide/riptide.c             |  6 +--
 sound/pci/rme32.c                       |  5 +-
 sound/pci/rme96.c                       |  5 +-
 sound/pci/rme9652/hdsp.c                |  5 +-
 sound/pci/rme9652/hdspm.c               | 55 ++++++++++------------
 sound/pci/rme9652/rme9652.c             |  6 +--
 sound/pci/sonicvibes.c                  |  6 +--
 sound/pci/trident/trident_main.c        |  4 +-
 sound/pci/via82xx.c                     |  6 +--
 sound/pci/via82xx_modem.c               |  6 +--
 sound/pci/ymfpci/ymfpci_main.c          |  6 +--
 sound/pcmcia/pdaudiocf/pdaudiocf_core.c |  5 +-
 sound/sparc/dbri.c                      | 10 +---
 sound/usb/mixer.c                       |  7 ++-
 sound/usb/mixer_quirks.c                |  6 +--
 sound/usb/proc.c                        | 13 ++----
 59 files changed, 268 insertions(+), 446 deletions(-)

Comments

Jaroslav Kysela Feb. 4, 2019, 6:40 p.m. UTC | #1
Dne 4.2.2019 v 16:20 Takashi Iwai napsal(a):
> Hi,
> 
> this is a patchset for cleaning up the procfs handling.
> 
> The first three patches are to remove the superfluous
> snd_info_register() calls (which are done eventually at the card
> creation time), and the rest patches are for introducing new helpers
> and cleaning up with them.  The latter has no functional changes but
> only reducing lots of codes.

Reviewed-by: Jaroslav Kysela <perex@perex.cz>

> 
> 
> thanks,
> 
> Takashi
> 
> ===
> 
> Takashi Iwai (11):
>   ALSA: pcm: Remove superfluous snd_info_register() calls
>   ALSA: compress: Remove superfluous snd_info_register() calls
>   ALSA: pci: Remove superfluous snd_info_register() calls
>   ALSA: info: Add standard helpers for card proc file entries
>   ALSA: drivers: Clean up with new procfs helpers
>   ALSA: isa: Clean up with new procfs helpers
>   ALSA: i2c: Clean up with new procfs helpers
>   ALSA: pci: Clean up with new procfs helpers
>   ALSA: pcmcia: Clean up with new procfs helpers
>   ALSA: sparc: Clean up with new procfs helpers
>   ALSA: usb: Clean up with new procfs helpers
> 
>  include/sound/info.h                    | 35 ++++++++++++++
>  sound/core/compress_offload.c           | 11 +----
>  sound/core/info.c                       | 31 +++++++++++++
>  sound/core/pcm.c                        | 79 +++++++++++---------------------
>  sound/drivers/aloop.c                   | 10 +---
>  sound/drivers/dummy.c                   | 10 +---
>  sound/drivers/vx/vx_core.c              |  5 +-
>  sound/i2c/other/ak4113.c                |  5 +-
>  sound/i2c/other/ak4114.c                |  5 +-
>  sound/i2c/other/ak4xxx-adda.c           |  8 +---
>  sound/isa/gus/gus_irq.c                 |  5 +-
>  sound/isa/gus/gus_mem.c                 |  6 +--
>  sound/isa/opti9xx/miro.c                |  5 +-
>  sound/isa/sb/sb16_csp.c                 |  5 +-
>  sound/pci/ac97/ac97_proc.c              | 26 ++++-------
>  sound/pci/ad1889.c                      |  6 +--
>  sound/pci/ak4531_codec.c                |  5 +-
>  sound/pci/ali5451/ali5451.c             |  4 +-
>  sound/pci/asihpi/asihpi.c               |  6 +--
>  sound/pci/atiixp.c                      |  5 +-
>  sound/pci/atiixp_modem.c                |  6 +--
>  sound/pci/ca0106/ca0106_proc.c          | 40 ++++++----------
>  sound/pci/cmipci.c                      |  5 +-
>  sound/pci/cs4281.c                      |  3 +-
>  sound/pci/cs46xx/dsp_spos.c             | 16 ++-----
>  sound/pci/emu10k1/emu10k1x.c            | 12 ++---
>  sound/pci/emu10k1/emuproc.c             | 81 +++++++++++++--------------------
>  sound/pci/ens1370.c                     |  6 +--
>  sound/pci/hda/hda_proc.c                |  9 +---
>  sound/pci/ice1712/ice1712.c             |  5 +-
>  sound/pci/ice1712/ice1724.c             |  5 +-
>  sound/pci/ice1712/pontis.c              | 12 ++---
>  sound/pci/ice1712/prodigy192.c          |  5 +-
>  sound/pci/ice1712/prodigy_hifi.c        |  8 +---
>  sound/pci/ice1712/quartet.c             |  4 +-
>  sound/pci/intel8x0.c                    |  6 +--
>  sound/pci/intel8x0m.c                   |  6 +--
>  sound/pci/korg1212/korg1212.c           |  6 +--
>  sound/pci/lola/lola_proc.c              | 16 ++-----
>  sound/pci/lx6464es/lx6464es.c           |  8 +---
>  sound/pci/mixart/mixart.c               |  6 +--
>  sound/pci/oxygen/oxygen_lib.c           |  5 +-
>  sound/pci/pcxhr/pcxhr.c                 | 21 +++------
>  sound/pci/riptide/riptide.c             |  6 +--
>  sound/pci/rme32.c                       |  5 +-
>  sound/pci/rme96.c                       |  5 +-
>  sound/pci/rme9652/hdsp.c                |  5 +-
>  sound/pci/rme9652/hdspm.c               | 55 ++++++++++------------
>  sound/pci/rme9652/rme9652.c             |  6 +--
>  sound/pci/sonicvibes.c                  |  6 +--
>  sound/pci/trident/trident_main.c        |  4 +-
>  sound/pci/via82xx.c                     |  6 +--
>  sound/pci/via82xx_modem.c               |  6 +--
>  sound/pci/ymfpci/ymfpci_main.c          |  6 +--
>  sound/pcmcia/pdaudiocf/pdaudiocf_core.c |  5 +-
>  sound/sparc/dbri.c                      | 10 +---
>  sound/usb/mixer.c                       |  7 ++-
>  sound/usb/mixer_quirks.c                |  6 +--
>  sound/usb/proc.c                        | 13 ++----
>  59 files changed, 268 insertions(+), 446 deletions(-)
>
Takashi Iwai Feb. 5, 2019, 3:58 p.m. UTC | #2
On Mon, 04 Feb 2019 16:20:25 +0100,
Takashi Iwai wrote:
> 
> Hi,
> 
> this is a patchset for cleaning up the procfs handling.
> 
> The first three patches are to remove the superfluous
> snd_info_register() calls (which are done eventually at the card
> creation time), and the rest patches are for introducing new helpers
> and cleaning up with them.  The latter has no functional changes but
> only reducing lots of codes.

I forgot to include the patch below in the previous submission;
otherwise this series would hit a creation-before-registration and
sysfs warning.  This has to be applied before others.

Also, I found a few other superfluous snd_info_register() calls in the
whole tree.  Will submit those patches soon later.

FYI, the latest patches are found in topic/proc-fixes branch of sound
git tree.


thanks,

Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: info: Always register entries recursively

Make sure that all children entries are registered by a single call of
snd_info_register().  OTOH, don't register if a parent isn't
registered yet.

This allows us to create the whole procfs tree in a shot at the last
stage of card registration phase in a later patch.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/core/info.c | 65 +++++++++++++++++++++++++++++--------------------------
 1 file changed, 34 insertions(+), 31 deletions(-)

diff --git a/sound/core/info.c b/sound/core/info.c
index 2dfb6389c084..5cd00629c0f5 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -523,27 +523,6 @@ int snd_info_card_create(struct snd_card *card)
 	return 0;
 }
 
-/* register all pending info entries */
-static int snd_info_register_recursive(struct snd_info_entry *entry)
-{
-	struct snd_info_entry *p;
-	int err;
-
-	if (!entry->p) {
-		err = snd_info_register(entry);
-		if (err < 0)
-			return err;
-	}
-
-	list_for_each_entry(p, &entry->children, list) {
-		err = snd_info_register_recursive(p);
-		if (err < 0)
-			return err;
-	}
-
-	return 0;
-}
-
 /*
  * register the card proc file
  * called from init.c
@@ -557,7 +536,7 @@ int snd_info_card_register(struct snd_card *card)
 	if (snd_BUG_ON(!card))
 		return -ENXIO;
 
-	err = snd_info_register_recursive(card->proc_root);
+	err = snd_info_register(card->proc_root);
 	if (err < 0)
 		return err;
 
@@ -821,15 +800,7 @@ void snd_info_free_entry(struct snd_info_entry * entry)
 }
 EXPORT_SYMBOL(snd_info_free_entry);
 
-/**
- * snd_info_register - register the info entry
- * @entry: the info entry
- *
- * Registers the proc info entry.
- *
- * Return: Zero if successful, or a negative error code on failure.
- */
-int snd_info_register(struct snd_info_entry * entry)
+static int __snd_info_register(struct snd_info_entry *entry)
 {
 	struct proc_dir_entry *root, *p = NULL;
 
@@ -837,6 +808,8 @@ int snd_info_register(struct snd_info_entry * entry)
 		return -ENXIO;
 	root = entry->parent == NULL ? snd_proc_root->p : entry->parent->p;
 	mutex_lock(&info_mutex);
+	if (entry->p || !root)
+		goto unlock;
 	if (S_ISDIR(entry->mode)) {
 		p = proc_mkdir_mode(entry->name, entry->mode, root);
 		if (!p) {
@@ -858,9 +831,39 @@ int snd_info_register(struct snd_info_entry * entry)
 		proc_set_size(p, entry->size);
 	}
 	entry->p = p;
+ unlock:
 	mutex_unlock(&info_mutex);
 	return 0;
 }
+
+/**
+ * snd_info_register - register the info entry
+ * @entry: the info entry
+ *
+ * Registers the proc info entry.
+ * The all children entries are registered recursively.
+ *
+ * Return: Zero if successful, or a negative error code on failure.
+ */
+int snd_info_register(struct snd_info_entry *entry)
+{
+	struct snd_info_entry *p;
+	int err;
+
+	if (!entry->p) {
+		err = __snd_info_register(entry);
+		if (err < 0)
+			return err;
+	}
+
+	list_for_each_entry(p, &entry->children, list) {
+		err = snd_info_register(p);
+		if (err < 0)
+			return err;
+	}
+
+	return 0;
+}
 EXPORT_SYMBOL(snd_info_register);
 
 /*