[PATCH] videodev redesign
authorGerd Knorr <kraxel@bytesex.org>
Tue, 12 Mar 2002 05:03:06 +0000 (21:03 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Tue, 12 Mar 2002 05:03:06 +0000 (21:03 -0800)
commit154feaef469b7e416093716dd693f475ec76c24a
tree6aa1260a1e7b1f319ff3d841ce30bf9751257cfa
parentca715f044bd23af189993f87cd48ef20055f92f6
[PATCH] videodev redesign

This patch is a redesign for videodev.[ch].  Changes:

- drop the function pointers (read/write/mmap/poll/...) from struct
  video_device, use struct file_operations directly instead.
  Dispatching to different drivers by minor number is done the same way
  soundcore.o handles this: swap file->f_fops at open() time.

- also drop the now obsolete video_red/write/mmap/poll/...  functions
  from videodev.c

- Stop using the BKL, use a mutex to protect open,register+unregister
  calls against races.

- provide a video_generic_ioctl() function which can (and should) be
  used by v4l drivers to handle copying from and to userspace.

- provide video_exclusive_open/release functions which can be used by
  v4l drivers to make sure only one process at a time opens the
  device.  They can be hooked directly into struct file_operations if
  some driver has nothing to initialize at open time (which is true
  for many drivers in drivers/media/radio/).

The move from function pointers in struct video_device to struct
file_operations does break all existing v4l drivers.  Thus I have a
large number of patches for the drivers in the kernel tree.  Most of it
is just the adoption to the videodev.[ch] changes, but I've also fixed a
small bug there and there while walking througth the source files.
drivers/media/video/videodev.c
include/linux/videodev.h