aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSakari Ailus <sakari.ailus@maxwell.research.nokia.com>2010-03-23 08:25:26 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-05-19 11:58:04 -0400
commit1babcb460f2b87c20eb6860b9685a0dab636cc4b (patch)
treeaaffa67ec3b3fc958ea2d7eea50e1b67242f2645 /include
parent96d8eab5d0a1a9741a4cae1b3c125d75d1aabedf (diff)
V4L/DVB: V4L: File handles
This patch adds a list of v4l2_fh structures to every video_device. It allows using file handle related information in V4L2. The event interface is one example of such use. The use of v4l2_fh is not mandatory for drivers. Signed-off-by: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/media/v4l2-dev.h5
-rw-r--r--include/media/v4l2-fh.h63
2 files changed, 68 insertions, 0 deletions
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 2dee93892ea2..bebe44b03e0f 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -32,6 +32,7 @@ struct v4l2_device;
32 Drivers can clear this flag if they want to block all future 32 Drivers can clear this flag if they want to block all future
33 device access. It is cleared by video_unregister_device. */ 33 device access. It is cleared by video_unregister_device. */
34#define V4L2_FL_REGISTERED (0) 34#define V4L2_FL_REGISTERED (0)
35#define V4L2_FL_USES_V4L2_FH (1)
35 36
36struct v4l2_file_operations { 37struct v4l2_file_operations {
37 struct module *owner; 38 struct module *owner;
@@ -77,6 +78,10 @@ struct video_device
77 /* attribute to differentiate multiple indices on one physical device */ 78 /* attribute to differentiate multiple indices on one physical device */
78 int index; 79 int index;
79 80
81 /* V4L2 file handles */
82 spinlock_t fh_lock; /* Lock for all v4l2_fhs */
83 struct list_head fh_list; /* List of struct v4l2_fh */
84
80 int debug; /* Activates debug level*/ 85 int debug; /* Activates debug level*/
81 86
82 /* Video standard vars */ 87 /* Video standard vars */
diff --git a/include/media/v4l2-fh.h b/include/media/v4l2-fh.h
new file mode 100644
index 000000000000..4aaa1508c8b5
--- /dev/null
+++ b/include/media/v4l2-fh.h
@@ -0,0 +1,63 @@
1/*
2 * v4l2-fh.h
3 *
4 * V4L2 file handle. Store per file handle data for the V4L2
5 * framework. Using file handles is optional for the drivers.
6 *
7 * Copyright (C) 2009--2010 Nokia Corporation.
8 *
9 * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * version 2 as published by the Free Software Foundation.
14 *
15 * This program is distributed in the hope that it will be useful, but
16 * WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
23 * 02110-1301 USA
24 */
25
26#ifndef V4L2_FH_H
27#define V4L2_FH_H
28
29#include <linux/list.h>
30
31struct video_device;
32
33struct v4l2_fh {
34 struct list_head list;
35 struct video_device *vdev;
36};
37
38/*
39 * Initialise the file handle. Parts of the V4L2 framework using the
40 * file handles should be initialised in this function. Must be called
41 * from driver's v4l2_file_operations->open() handler if the driver
42 * uses v4l2_fh.
43 */
44int v4l2_fh_init(struct v4l2_fh *fh, struct video_device *vdev);
45/*
46 * Add the fh to the list of file handles on a video_device. The file
47 * handle must be initialised first.
48 */
49void v4l2_fh_add(struct v4l2_fh *fh);
50/*
51 * Remove file handle from the list of file handles. Must be called in
52 * v4l2_file_operations->release() handler if the driver uses v4l2_fh.
53 */
54void v4l2_fh_del(struct v4l2_fh *fh);
55/*
56 * Release resources related to a file handle. Parts of the V4L2
57 * framework using the v4l2_fh must release their resources here, too.
58 * Must be called in v4l2_file_operations->release() handler if the
59 * driver uses v4l2_fh.
60 */
61void v4l2_fh_exit(struct v4l2_fh *fh);
62
63#endif /* V4L2_EVENT_H */