diff options
| author | Hans Verkuil <hverkuil@xs4all.nl> | 2008-12-30 04:58:20 -0500 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-01-02 14:11:12 -0500 |
| commit | bec43661b1dc0075b7445223ba775674133b164d (patch) | |
| tree | 2a09ad5cc78799985e5cfb789f0a23db58e70499 /include | |
| parent | dfa9a5ae679ff2d23caa995d0f55a19abaf0596e (diff) | |
V4L/DVB (10135): v4l2: introduce v4l2_file_operations.
Introduce a struct v4l2_file_operations for v4l2 drivers.
Remove the unnecessary inode argument.
Move compat32 handling (and llseek) into the v4l2-dev core: this is now
handled in the v4l2 core and no longer in the drivers themselves.
Note that this changeset reverts an earlier patch that changed the return
type of__video_ioctl2 from int to long. This change will be reinstated
later in a much improved version.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/media/saa7146_vv.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-dev.h | 15 | ||||
| -rw-r--r-- | include/media/v4l2-ioctl.h | 15 | ||||
| -rw-r--r-- | include/sound/tea575x-tuner.h | 2 |
4 files changed, 19 insertions, 15 deletions
diff --git a/include/media/saa7146_vv.h b/include/media/saa7146_vv.h index 6bbb0d93bb5..fd7f4fe8c1a 100644 --- a/include/media/saa7146_vv.h +++ b/include/media/saa7146_vv.h | |||
| @@ -179,7 +179,7 @@ struct saa7146_ext_vv | |||
| 179 | struct saa7146_extension_ioctls *ioctls; | 179 | struct saa7146_extension_ioctls *ioctls; |
| 180 | int (*ioctl)(struct saa7146_fh*, unsigned int cmd, void *arg); | 180 | int (*ioctl)(struct saa7146_fh*, unsigned int cmd, void *arg); |
| 181 | 181 | ||
| 182 | struct file_operations vbi_fops; | 182 | struct v4l2_file_operations vbi_fops; |
| 183 | }; | 183 | }; |
| 184 | 184 | ||
| 185 | struct saa7146_use_ops { | 185 | struct saa7146_use_ops { |
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index 0a88d1d17d3..4d8ce34551d 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #define VFL_TYPE_MAX 4 | 25 | #define VFL_TYPE_MAX 4 |
| 26 | 26 | ||
| 27 | struct v4l2_ioctl_callbacks; | 27 | struct v4l2_ioctl_callbacks; |
| 28 | struct video_device; | ||
| 28 | struct v4l2_device; | 29 | struct v4l2_device; |
| 29 | 30 | ||
| 30 | /* Flag to mark the video_device struct as unregistered. | 31 | /* Flag to mark the video_device struct as unregistered. |
| @@ -32,6 +33,18 @@ struct v4l2_device; | |||
| 32 | device access. It is set by video_unregister_device. */ | 33 | device access. It is set by video_unregister_device. */ |
| 33 | #define V4L2_FL_UNREGISTERED (0) | 34 | #define V4L2_FL_UNREGISTERED (0) |
| 34 | 35 | ||
| 36 | struct v4l2_file_operations { | ||
| 37 | struct module *owner; | ||
| 38 | ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); | ||
| 39 | ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); | ||
| 40 | unsigned int (*poll) (struct file *, struct poll_table_struct *); | ||
| 41 | int (*ioctl) (struct file *, unsigned int, unsigned long); | ||
| 42 | long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); | ||
| 43 | int (*mmap) (struct file *, struct vm_area_struct *); | ||
| 44 | int (*open) (struct file *); | ||
| 45 | int (*release) (struct file *); | ||
| 46 | }; | ||
| 47 | |||
| 35 | /* | 48 | /* |
| 36 | * Newer version of video_device, handled by videodev2.c | 49 | * Newer version of video_device, handled by videodev2.c |
| 37 | * This version moves redundant code from video device code to | 50 | * This version moves redundant code from video device code to |
| @@ -41,7 +54,7 @@ struct v4l2_device; | |||
| 41 | struct video_device | 54 | struct video_device |
| 42 | { | 55 | { |
| 43 | /* device ops */ | 56 | /* device ops */ |
| 44 | const struct file_operations *fops; | 57 | const struct v4l2_file_operations *fops; |
| 45 | 58 | ||
| 46 | /* sysfs */ | 59 | /* sysfs */ |
| 47 | struct device dev; /* v4l device */ | 60 | struct device dev; /* v4l device */ |
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h index fcdb58c4ce0..835af438e4f 100644 --- a/include/media/v4l2-ioctl.h +++ b/include/media/v4l2-ioctl.h | |||
| @@ -286,27 +286,18 @@ int v4l_compat_translate_ioctl(struct file *file, | |||
| 286 | #define v4l_compat_translate_ioctl(file, cmd, arg, ioctl) (-EINVAL) | 286 | #define v4l_compat_translate_ioctl(file, cmd, arg, ioctl) (-EINVAL) |
| 287 | #endif | 287 | #endif |
| 288 | 288 | ||
| 289 | #ifdef CONFIG_COMPAT | ||
| 289 | /* 32 Bits compatibility layer for 64 bits processors */ | 290 | /* 32 Bits compatibility layer for 64 bits processors */ |
| 290 | extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd, | 291 | extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd, |
| 291 | unsigned long arg); | 292 | unsigned long arg); |
| 293 | #endif | ||
| 292 | 294 | ||
| 293 | /* Include support for obsoleted stuff */ | 295 | /* Include support for obsoleted stuff */ |
| 294 | extern int video_usercopy(struct file *file, unsigned int cmd, | 296 | extern int video_usercopy(struct file *file, unsigned int cmd, |
| 295 | unsigned long arg, v4l2_kioctl func); | 297 | unsigned long arg, v4l2_kioctl func); |
| 296 | 298 | ||
| 297 | /* Standard handlers for V4L ioctl's */ | 299 | /* Standard handlers for V4L ioctl's */ |
| 298 | 300 | extern int video_ioctl2(struct file *file, | |
| 299 | /* This prototype is used on fops.unlocked_ioctl */ | ||
| 300 | extern long __video_ioctl2(struct file *file, | ||
| 301 | unsigned int cmd, unsigned long arg); | ||
| 302 | |||
| 303 | /* This prototype is used on fops.ioctl | ||
| 304 | * Since fops.ioctl enables Kernel Big Lock, it is preferred | ||
| 305 | * to use __video_ioctl2 instead. | ||
| 306 | * It should be noticed that there's no lock code inside | ||
| 307 | * video_ioctl2(). | ||
| 308 | */ | ||
| 309 | extern int video_ioctl2(struct inode *inode, struct file *file, | ||
| 310 | unsigned int cmd, unsigned long arg); | 301 | unsigned int cmd, unsigned long arg); |
| 311 | 302 | ||
| 312 | #endif /* _V4L2_IOCTL_H */ | 303 | #endif /* _V4L2_IOCTL_H */ |
diff --git a/include/sound/tea575x-tuner.h b/include/sound/tea575x-tuner.h index b6870cbaf2b..426899e529c 100644 --- a/include/sound/tea575x-tuner.h +++ b/include/sound/tea575x-tuner.h | |||
| @@ -36,7 +36,7 @@ struct snd_tea575x_ops { | |||
| 36 | struct snd_tea575x { | 36 | struct snd_tea575x { |
| 37 | struct snd_card *card; | 37 | struct snd_card *card; |
| 38 | struct video_device vd; /* video device */ | 38 | struct video_device vd; /* video device */ |
| 39 | struct file_operations fops; | 39 | struct v4l2_file_operations fops; |
| 40 | int dev_nr; /* requested device number + 1 */ | 40 | int dev_nr; /* requested device number + 1 */ |
| 41 | int vd_registered; /* video device is registered */ | 41 | int vd_registered; /* video device is registered */ |
| 42 | int tea5759; /* 5759 chip is present */ | 42 | int tea5759; /* 5759 chip is present */ |
