Update of /cvsroot/alsa/alsa-kernel/core
In directory sc8-pr-cvs1:/tmp/cvs-serv6295/core
Modified Files:
info.c sound.c
Log Message:
[PATCH: proc-card-dev.dif]
- added snd_card_proc_new() to create a normal text proc file for
the card basis. it's handled as an ALSA device, so no explicit
destruction is necessary.
- snd_info_set_text_ops() to set the callback function for convenience.
- applied the new function to each source and clean-up.
Index: info.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/info.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- info.c 19 Dec 2002 15:59:17 -0000 1.27
+++ info.c 7 Jan 2003 10:36:28 -0000 1.28
@@ -808,12 +808,12 @@
static snd_info_entry_t *snd_info_create_entry(const char *name)
{
snd_info_entry_t *entry;
- entry = (snd_info_entry_t *) snd_kcalloc(sizeof(snd_info_entry_t), GFP_KERNEL);
+ entry = snd_magic_kcalloc(snd_info_entry_t, 0, GFP_KERNEL);
if (entry == NULL)
return NULL;
entry->name = snd_kmalloc_strdup(name, GFP_KERNEL);
if (entry->name == NULL) {
- kfree(entry);
+ snd_magic_kfree(entry);
return NULL;
}
entry->mode = S_IFREG | S_IRUGO;
@@ -847,6 +847,49 @@
return entry;
}
+static int snd_info_dev_free_entry(snd_device_t *device)
+{
+ snd_info_entry_t *entry = snd_magic_cast(snd_info_entry_t,
+device->device_data, return -ENXIO);
+ snd_info_free_entry(entry);
+ return 0;
+}
+
+static int snd_info_dev_register_entry(snd_device_t *device)
+{
+ snd_info_entry_t *entry = snd_magic_cast(snd_info_entry_t,
+device->device_data, return -ENXIO);
+ return snd_info_register(entry);
+}
+
+static int snd_info_dev_unregister_entry(snd_device_t *device)
+{
+ snd_info_entry_t *entry = snd_magic_cast(snd_info_entry_t,
+device->device_data, return -ENXIO);
+ return snd_info_unregister(entry);
+}
+
+int snd_card_proc_new(snd_card_t *card, const char *name,
+ snd_info_entry_t **entryp)
+{
+ static snd_device_ops_t ops = {
+ .dev_free = snd_info_dev_free_entry,
+ .dev_register = snd_info_dev_register_entry,
+ // .dev_disconnect = snd_info_dev_disconnect_entry,
+ .dev_unregister = snd_info_dev_unregister_entry
+ };
+ snd_info_entry_t *entry;
+ int err;
+
+ entry = snd_info_create_card_entry(card, name, card->proc_root);
+ if (! entry)
+ return -ENOMEM;
+ if ((err = snd_device_new(card, SNDRV_DEV_INFO, entry, &ops)) < 0) {
+ snd_info_free_entry(entry);
+ return err;
+ }
+ if (entryp)
+ *entryp = entry;
+ return 0;
+}
+
void snd_info_free_entry(snd_info_entry_t * entry)
{
if (entry == NULL)
@@ -855,7 +898,7 @@
kfree((char *)entry->name);
if (entry->private_free)
entry->private_free(entry);
- kfree(entry);
+ snd_magic_kfree(entry);
}
#ifdef LINUX_2_2
@@ -894,9 +937,6 @@
snd_info_entry_t *snd_info_create_device(const char *name, unsigned int number,
unsigned int mode)
{
-#ifdef CONFIG_DEVFS_FS
- char dname[32];
-#endif
unsigned short _major = number >> 16;
unsigned short minor = (unsigned short) number;
snd_info_entry_t *entry;
@@ -933,6 +973,7 @@
up(&info_mutex);
#ifdef CONFIG_DEVFS_FS
if (strncmp(name, "controlC", 8)) { /* created in sound.c */
+ char dname[32];
sprintf(dname, "snd/%s", name);
devfs_register(NULL, dname, DEVFS_FL_DEFAULT,
major, minor, mode,
Index: sound.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/sound.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- sound.c 29 Nov 2002 21:22:24 -0000 1.30
+++ sound.c 7 Jan 2003 10:36:28 -0000 1.31
@@ -463,6 +463,7 @@
EXPORT_SYMBOL(snd_info_free_device);
EXPORT_SYMBOL(snd_info_register);
EXPORT_SYMBOL(snd_info_unregister);
+EXPORT_SYMBOL(snd_card_proc_new);
#endif
/* info_oss.c */
#if defined(CONFIG_SND_OSSEMUL) && defined(CONFIG_PROC_FS)
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog