summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/v4l2-ioctl.c
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2012-07-12 17:06:24 +0200
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-07-31 02:43:25 +0200
commit26ddcbcca3057125a0e5f3901b06439a20869640 (patch)
tree00a0fe47765d6874ce3cf4a147ffb92a229f316d /drivers/media/video/v4l2-ioctl.c
parent[media] mceusb: Add Twisted Melon USB IDs (diff)
downloadlinux-26ddcbcca3057125a0e5f3901b06439a20869640.tar.xz
linux-26ddcbcca3057125a0e5f3901b06439a20869640.zip
[media] Use a named union in struct v4l2_ioctl_info
Hi Mauro, struct v4l2_ioctl_info uses an anonymous union, which is initialized in the v4l2_ioctls table. Unfortunately gcc < 4.6 uses a non-standard syntax for that, so trying to compile v4l2-ioctl.c with an older gcc will fail. It is possible to work around this by testing the gcc version, but in this case it is easier to make the union named since it is used in only a few places. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Reported-by: Randy Dunlap <rdunlap@xenotime.net> Acked-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/v4l2-ioctl.c')
-rw-r--r--drivers/media/video/v4l2-ioctl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index 0f54f8efe66b..c3b7b5f59b32 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -1891,7 +1891,7 @@ struct v4l2_ioctl_info {
u32 offset;
int (*func)(const struct v4l2_ioctl_ops *ops,
struct file *file, void *fh, void *p);
- };
+ } u;
void (*debug)(const void *arg, bool write_only);
};
@@ -1916,7 +1916,7 @@ struct v4l2_ioctl_info {
.ioctl = _ioctl, \
.flags = _flags | INFO_FL_STD, \
.name = #_ioctl, \
- .offset = offsetof(struct v4l2_ioctl_ops, _vidioc), \
+ .u.offset = offsetof(struct v4l2_ioctl_ops, _vidioc), \
.debug = _debug, \
}
@@ -1925,7 +1925,7 @@ struct v4l2_ioctl_info {
.ioctl = _ioctl, \
.flags = _flags | INFO_FL_FUNC, \
.name = #_ioctl, \
- .func = _func, \
+ .u.func = _func, \
.debug = _debug, \
}
@@ -2124,11 +2124,11 @@ static long __video_do_ioctl(struct file *file,
if (info->flags & INFO_FL_STD) {
typedef int (*vidioc_op)(struct file *file, void *fh, void *p);
const void *p = vfd->ioctl_ops;
- const vidioc_op *vidioc = p + info->offset;
+ const vidioc_op *vidioc = p + info->u.offset;
ret = (*vidioc)(file, fh, arg);
} else if (info->flags & INFO_FL_FUNC) {
- ret = info->func(ops, file, fh, arg);
+ ret = info->u.func(ops, file, fh, arg);
} else if (!ops->vidioc_default) {
ret = -ENOTTY;
} else {