Re: [linux-audio-user] kfusd module (oss2jack) unknown symbols with 2.6.13

From: Salvatore Di Pietro <salvuz_78@email-addr-hidden>
Date: Fri Sep 16 2005 - 02:09:35 EEST

Esben Stien wrote:
> Salvatore Di Pietro <salvuz_78@email-addr-hidden> writes:
>
>
>>I am experiencing problems during the build (and consequently
>>modprobe) process of Kor Nielsen hacked version of kfusd module for
>>OSS2JACK, fusd-kor-1.10-9.
>
>
> I used this patch:
>
> http://bugs.gentoo.org/show_bug.cgi?id=96449
>
> Well, actually it didn't apply, so I patched it manually (just a few
> lines).
>
> Also see this link:
>
> http://forums.gentoo.org/viewtopic-t-354750-postdays-0-postorder-asc-start-50.html?sid=ddb88bc061d05154928a941f096cea66
>

Thank you! I had to patch it manually, too, and in attachment here's the
patch I made: apply with

patch -p1 </path/to/fusd-kor-1.10-9_kernel_2.6.13_patch

> I run 2.6.13-rt4 with oss2jack. I have never used this solution before
> and I experience different troubles like crackles in the sound and I'm
> also not able to feed a jack stream into it. It connects but it's not
> putting the stream into the oss app.

It really depends on the application. Good results are with (according
to info on website):

     * mplayer
     * artsd (and thus all the kde applications)
     * xmms
     * Macromedia Flash
     * xine
     * Totem
     * esd
     * SoundTracker
     * Frozen Bubble
     * GStreamer (osssink)
     * Quake 3
     * Audacity
     * Skype

I dind't manage to make it work with Audacity, though...
With Skype I had no problem:
http://alsa.opensrc.org/index.php?page=JACK

> I'll do some more testing before I ask anything specific, but please
> report back if you get it to work with inputs and no crackles in the
> sound.

--- fusd-kor-1.10-9/kfusd/kfusd.c 2005-06-18 08:53:52.000000000 +0200
+++ fusd-kor-1.10-9.bak/kfusd/kfusd.c 2005-09-16 00:38:51.000000000 +0200
@@ -125,12 +125,12 @@
 STATIC dev_t control_id;
 STATIC dev_t status_id;
 
-static struct class_simple *fusd_class;
+static struct class *fusd_class;
 
 static struct class_device *fusd_control_class_device;
 static struct class_device *fusd_status_class_device;
 
-extern struct class_simple *sound_class;
+extern struct class *sound_class;
 
 /* version number incremented for each registered device */
 STATIC int last_version = 1;
@@ -1965,7 +1965,7 @@
         }
         else
         {
- fusd_dev->clazz = class_simple_create(THIS_MODULE, fusd_dev->class_name);
+ fusd_dev->clazz = class_create(THIS_MODULE, fusd_dev->class_name);
                 if(IS_ERR(fusd_dev->clazz))
                 {
                         error = PTR_ERR(fusd_dev->clazz);
@@ -1974,11 +1974,11 @@
                 fusd_dev->owns_class = 1;
         }
         
- fusd_dev->class_device = class_simple_device_add(fusd_dev->clazz, fusd_dev->dev_id, NULL, fusd_dev->dev_name);
+ fusd_dev->class_device = class_device_create(fusd_dev->clazz, fusd_dev->dev_id, NULL, fusd_dev->dev_name);
         if(fusd_dev->class_device == NULL)
         {
                 error = PTR_ERR(fusd_dev->class_device);
- printk("class_simple_device_add failed status: %d\n", error);
+ printk("class_device_create failed status: %d\n", error);
                 goto register_failed5;
         }
         
@@ -2001,7 +2001,7 @@
   return 0;
 
 register_failed5:
- class_simple_destroy(fusd_dev->clazz);
+ class_destroy(fusd_dev->clazz);
 register_failed4:
         cdev_del(fusd_dev->handle);
 register_failed3:
@@ -2093,10 +2093,10 @@
 
         if(fusd_dev->handle)
         {
- class_simple_device_remove(fusd_dev->dev_id);
+ class_device_destroy(fusd_class,fusd_dev->dev_id);
                 if(fusd_dev->owns_class)
                 {
- class_simple_destroy(fusd_dev->clazz);
+ class_destroy(fusd_dev->clazz);
                 }
                 cdev_del(fusd_dev->handle);
 #ifdef CONFIG_DEVFS_FS
@@ -2799,11 +2799,11 @@
         fusd_control_device = NULL;
         fusd_status_device = NULL;
         
- fusd_class = class_simple_create(THIS_MODULE, "fusd");
+ fusd_class = class_create(THIS_MODULE, "fusd");
         if(IS_ERR(fusd_class))
         {
                 retval = PTR_ERR(fusd_class);
- printk("class_simple_create failed status: %d\n", retval);
+ printk("class_create failed status: %d\n", retval);
                 goto fail0;
         }
         
@@ -2841,11 +2841,11 @@
                 goto fail4;
         }
         
- fusd_control_class_device = class_simple_device_add(fusd_class, control_id, NULL, "control");
+ fusd_control_class_device = class_device_create(fusd_class, control_id, NULL, "control");
         if(fusd_control_class_device == NULL)
         {
                 retval = PTR_ERR(fusd_control_class_device);
- printk("class_simple_device_add failed status: %d\n", retval);
+ printk("class_device_create failed status: %d\n", retval);
                 goto fail5;
         }
 
@@ -2882,10 +2882,10 @@
                 goto fail9;
         }
         
- fusd_status_class_device = class_simple_device_add(fusd_class, status_id, NULL, "status");
+ fusd_status_class_device = class_device_create(fusd_class, status_id, NULL, "status");
         if(fusd_status_class_device == NULL)
         {
- printk("class_simple_device_add failed status: %d\n", retval);
+ printk("class_device_add failed status: %d\n", retval);
                 retval = PTR_ERR(fusd_status_class_device);
                 goto fail10;
         }
@@ -2904,7 +2904,7 @@
 fail7:
         unregister_chrdev_region(status_id, 1);
 fail6:
- class_simple_device_remove(control_id);
+ class_device_destroy(fusd_class,control_id);
 fail5:
         cdev_del(fusd_control_device);
 fail4:
@@ -2916,7 +2916,7 @@
 fail2:
         unregister_chrdev_region(control_id, 1);
 fail1:
- class_simple_destroy(fusd_class);
+ class_destroy(fusd_class);
 fail0:
         return retval;
 }
@@ -2925,8 +2925,8 @@
 {
   RDEBUG(1, "cleaning up");
 
- class_simple_device_remove(status_id);
- class_simple_device_remove(control_id);
+ class_device_destroy(fusd_class,status_id);
+ class_device_destroy(fusd_class,control_id);
         
         cdev_del(fusd_control_device);
         cdev_del(fusd_status_device);
@@ -2935,7 +2935,7 @@
   devfs_remove(FUSD_STATUS_FILENAME);
 
 
- class_simple_destroy(fusd_class);
+ class_destroy(fusd_class);
         
 #ifdef CONFIG_FUSD_MEMDEBUG
   fusd_mem_cleanup();
Received on Fri Sep 16 04:15:04 2005

This archive was generated by hypermail 2.1.8 : Fri Sep 16 2005 - 04:15:05 EEST