ALSA: core: Manage asound root directory with snd_info_entry
Using snd_info_entry for /proc/asound root makes easier to release the all children, too. Further cleanups will follow. Acked-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
c560a6797e
commit
644dbd64dc
|
@ -78,14 +78,13 @@ struct snd_info_private_data {
|
||||||
};
|
};
|
||||||
|
|
||||||
static int snd_info_version_init(void);
|
static int snd_info_version_init(void);
|
||||||
static int snd_info_version_done(void);
|
|
||||||
static void snd_info_disconnect(struct snd_info_entry *entry);
|
static void snd_info_disconnect(struct snd_info_entry *entry);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct proc_dir_entry *snd_proc_root;
|
static struct snd_info_entry *snd_proc_root;
|
||||||
struct snd_info_entry *snd_seq_root;
|
struct snd_info_entry *snd_seq_root;
|
||||||
EXPORT_SYMBOL(snd_seq_root);
|
EXPORT_SYMBOL(snd_seq_root);
|
||||||
|
|
||||||
|
@ -462,14 +461,17 @@ static struct snd_info_entry *create_subdir(struct module *mod,
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct snd_info_entry *snd_info_create_entry(const char *name);
|
||||||
|
|
||||||
int __init snd_info_init(void)
|
int __init snd_info_init(void)
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *p;
|
snd_proc_root = snd_info_create_entry("asound");
|
||||||
|
if (!snd_proc_root)
|
||||||
p = proc_mkdir("asound", NULL);
|
|
||||||
if (p == NULL)
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
snd_proc_root = p;
|
snd_proc_root->mode = S_IFDIR | S_IRUGO | S_IXUGO;
|
||||||
|
snd_proc_root->p = proc_mkdir("asound", NULL);
|
||||||
|
if (!snd_proc_root->p)
|
||||||
|
goto error;
|
||||||
#ifdef CONFIG_SND_OSSEMUL
|
#ifdef CONFIG_SND_OSSEMUL
|
||||||
snd_oss_root = create_subdir(THIS_MODULE, "oss");
|
snd_oss_root = create_subdir(THIS_MODULE, "oss");
|
||||||
if (!snd_oss_root)
|
if (!snd_oss_root)
|
||||||
|
@ -487,10 +489,7 @@ int __init snd_info_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
#ifdef CONFIG_SND_OSSEMUL
|
snd_info_free_entry(snd_proc_root);
|
||||||
snd_info_free_entry(snd_oss_root);
|
|
||||||
#endif
|
|
||||||
proc_remove(snd_proc_root);
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,24 +498,10 @@ int __exit snd_info_done(void)
|
||||||
snd_card_info_done();
|
snd_card_info_done();
|
||||||
snd_minor_info_oss_done();
|
snd_minor_info_oss_done();
|
||||||
snd_minor_info_done();
|
snd_minor_info_done();
|
||||||
snd_info_version_done();
|
snd_info_free_entry(snd_proc_root);
|
||||||
if (snd_proc_root) {
|
|
||||||
#if IS_ENABLED(CONFIG_SND_SEQUENCER)
|
|
||||||
snd_info_free_entry(snd_seq_root);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_SND_OSSEMUL
|
|
||||||
snd_info_free_entry(snd_oss_root);
|
|
||||||
#endif
|
|
||||||
proc_remove(snd_proc_root);
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* create a card proc file
|
* create a card proc file
|
||||||
* called from init.c
|
* called from init.c
|
||||||
|
@ -551,7 +536,7 @@ int snd_info_card_register(struct snd_card *card)
|
||||||
if (!strcmp(card->id, card->proc_root->name))
|
if (!strcmp(card->id, card->proc_root->name))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
p = proc_symlink(card->id, snd_proc_root, card->proc_root->name);
|
p = proc_symlink(card->id, snd_proc_root->p, card->proc_root->name);
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
card->proc_root_link = p;
|
card->proc_root_link = p;
|
||||||
|
@ -570,7 +555,7 @@ void snd_info_card_id_change(struct snd_card *card)
|
||||||
}
|
}
|
||||||
if (strcmp(card->id, card->proc_root->name))
|
if (strcmp(card->id, card->proc_root->name))
|
||||||
card->proc_root_link = proc_symlink(card->id,
|
card->proc_root_link = proc_symlink(card->id,
|
||||||
snd_proc_root,
|
snd_proc_root->p,
|
||||||
card->proc_root->name);
|
card->proc_root->name);
|
||||||
mutex_unlock(&info_mutex);
|
mutex_unlock(&info_mutex);
|
||||||
}
|
}
|
||||||
|
@ -815,7 +800,7 @@ int snd_info_register(struct snd_info_entry * entry)
|
||||||
|
|
||||||
if (snd_BUG_ON(!entry))
|
if (snd_BUG_ON(!entry))
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
root = entry->parent == NULL ? snd_proc_root : entry->parent->p;
|
root = entry->parent == NULL ? snd_proc_root->p : entry->parent->p;
|
||||||
mutex_lock(&info_mutex);
|
mutex_lock(&info_mutex);
|
||||||
if (S_ISDIR(entry->mode)) {
|
if (S_ISDIR(entry->mode)) {
|
||||||
p = proc_mkdir_mode(entry->name, entry->mode, root);
|
p = proc_mkdir_mode(entry->name, entry->mode, root);
|
||||||
|
@ -850,8 +835,6 @@ EXPORT_SYMBOL(snd_info_register);
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct snd_info_entry *snd_info_version_entry;
|
|
||||||
|
|
||||||
static void snd_info_version_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer)
|
static void snd_info_version_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer)
|
||||||
{
|
{
|
||||||
snd_iprintf(buffer,
|
snd_iprintf(buffer,
|
||||||
|
@ -871,13 +854,6 @@ static int __init snd_info_version_init(void)
|
||||||
snd_info_free_entry(entry);
|
snd_info_free_entry(entry);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
snd_info_version_entry = entry;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __exit snd_info_version_done(void)
|
|
||||||
{
|
|
||||||
snd_info_free_entry(snd_info_version_entry);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue