Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
media
v4l2-fh.h
Go to the documentation of this file.
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 <
[email protected]
>
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
31
struct
video_device
;
32
struct
v4l2_ctrl_handler
;
33
34
struct
v4l2_fh
{
35
struct
list_head
list
;
36
struct
video_device
*
vdev
;
37
struct
v4l2_ctrl_handler
*
ctrl_handler
;
38
enum
v4l2_priority
prio
;
39
40
/* Events */
41
wait_queue_head_t
wait
;
42
struct
list_head
subscribed
;
/* Subscribed events */
43
struct
list_head
available
;
/* Dequeueable event */
44
unsigned
int
navailable
;
45
u32
sequence
;
46
};
47
48
/*
49
* Initialise the file handle. Parts of the V4L2 framework using the
50
* file handles should be initialised in this function. Must be called
51
* from driver's v4l2_file_operations->open() handler if the driver
52
* uses v4l2_fh.
53
*/
54
void
v4l2_fh_init
(
struct
v4l2_fh
*fh,
struct
video_device
*vdev);
55
/*
56
* Add the fh to the list of file handles on a video_device. The file
57
* handle must be initialised first.
58
*/
59
void
v4l2_fh_add
(
struct
v4l2_fh
*fh);
60
/*
61
* Can be used as the open() op of v4l2_file_operations.
62
* It allocates a v4l2_fh and inits and adds it to the video_device associated
63
* with the file pointer.
64
*/
65
int
v4l2_fh_open
(
struct
file
*filp);
66
/*
67
* Remove file handle from the list of file handles. Must be called in
68
* v4l2_file_operations->release() handler if the driver uses v4l2_fh.
69
* On error filp->private_data will be NULL, otherwise it will point to
70
* the v4l2_fh struct.
71
*/
72
void
v4l2_fh_del
(
struct
v4l2_fh
*fh);
73
/*
74
* Release resources related to a file handle. Parts of the V4L2
75
* framework using the v4l2_fh must release their resources here, too.
76
* Must be called in v4l2_file_operations->release() handler if the
77
* driver uses v4l2_fh.
78
*/
79
void
v4l2_fh_exit
(
struct
v4l2_fh
*fh);
80
/*
81
* Can be used as the release() op of v4l2_file_operations.
82
* It deletes and exits the v4l2_fh associated with the file pointer and
83
* frees it. It will do nothing if filp->private_data (the pointer to the
84
* v4l2_fh struct) is NULL. This function always returns 0.
85
*/
86
int
v4l2_fh_release
(
struct
file
*filp);
87
/*
88
* Returns 1 if this filehandle is the only filehandle opened for the
89
* associated video_device. If fh is NULL, then it returns 0.
90
*/
91
int
v4l2_fh_is_singular
(
struct
v4l2_fh
*fh);
92
/*
93
* Helper function with struct file as argument. If filp->private_data is
94
* NULL, then it will return 0.
95
*/
96
static
inline
int
v4l2_fh_is_singular_file(
struct
file
*filp)
97
{
98
return
v4l2_fh_is_singular
(filp->
private_data
);
99
}
100
101
#endif
/* V4L2_EVENT_H */
Generated on Thu Jan 10 2013 14:52:56 for Linux Kernel by
1.8.2