Ok, much better.  devfs wants "void *ops" not a struct file_operations. 
Attached is a better patch, against 2.4.0-test10-pre7, which allows
video devices to handle all file ops themselves, giving themselves full
power to do whatever they wish.

-- 
Jeff Garzik             | "Mind if I drive?"  -Sam
Building 1024           | "Not if you don't mind me clawing at the
MandrakeSoft            |  dash and shrieking like a cheerleader."
                        |                     -Max
Index: include/linux/videodev.h
===================================================================
RCS file: /cvsroot/gkernel/linux_2_4/include/linux/videodev.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 videodev.h
--- include/linux/videodev.h    2000/10/22 19:36:11     1.1.1.1
+++ include/linux/videodev.h    2000/10/31 07:42:45
@@ -32,6 +32,7 @@
        int busy;
        int minor;
        devfs_handle_t devfs_handle;
+       struct file_operation *fops;
 };
 
 extern int videodev_init(void);
Index: drivers/media/video/videodev.c
===================================================================
RCS file: /cvsroot/gkernel/linux_2_4/drivers/media/video/videodev.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 videodev.c
--- drivers/media/video/videodev.c      2000/10/22 21:28:40     1.1.1.1
+++ drivers/media/video/videodev.c      2000/10/31 07:42:46
@@ -476,6 +476,7 @@
                            devfs_register (NULL, name, DEVFS_FL_DEFAULT,
                                            VIDEO_MAJOR, vfd->minor,
                                            S_IFCHR | S_IRUSR | S_IWUSR,
+                                           vfd->fops ? (void*) vfd->fops :
                                            &video_fops, NULL);
 
 #if defined(CONFIG_PROC_FS) && defined(CONFIG_VIDEO_PROC_FS)

Reply via email to