Message ID | 20190204152036.14102-1-tiwai@suse.de (mailing list archive) |
---|---|
Headers | show |
Series | ALSA: procfs cleanups | expand |
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(-) >
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); /*