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

Reply via email to