Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
29b59417
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
29b59417
编写于
12月 16, 2008
作者:
M
Mauro Carvalho Chehab
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
V4L/DVB (9910): em28xx: move res_get locks to the caller routines
Signed-off-by:
N
Mauro Carvalho Chehab
<
mchehab@redhat.com
>
上级
7831364f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
11 deletion
+25
-11
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/em28xx/em28xx-video.c
+25
-11
未找到文件。
drivers/media/video/em28xx/em28xx-video.c
浏览文件 @
29b59417
...
...
@@ -599,12 +599,10 @@ static int res_get(struct em28xx_fh *fh)
return
rc
;
if
(
dev
->
stream_on
)
return
-
E
INVAL
;
return
-
E
BUSY
;
mutex_lock
(
&
dev
->
lock
);
dev
->
stream_on
=
1
;
fh
->
stream_on
=
1
;
mutex_unlock
(
&
dev
->
lock
);
return
rc
;
}
...
...
@@ -1257,8 +1255,12 @@ static int vidioc_streamon(struct file *file, void *priv,
return
rc
;
if
(
unlikely
(
res_get
(
fh
)
<
0
))
return
-
EBUSY
;
mutex_lock
(
&
dev
->
lock
);
rc
=
res_get
(
fh
);
mutex_unlock
(
&
dev
->
lock
);
if
(
unlikely
(
rc
<
0
))
return
rc
;
return
(
videobuf_streamon
(
&
fh
->
vb_vidq
));
}
...
...
@@ -1738,8 +1740,12 @@ em28xx_v4l2_read(struct file *filp, char __user *buf, size_t count,
*/
if
(
fh
->
type
==
V4L2_BUF_TYPE_VIDEO_CAPTURE
)
{
if
(
unlikely
(
res_get
(
fh
)))
return
-
EBUSY
;
mutex_lock
(
&
dev
->
lock
);
rc
=
res_get
(
fh
);
mutex_unlock
(
&
dev
->
lock
);
if
(
unlikely
(
rc
<
0
))
return
rc
;
return
videobuf_read_stream
(
&
fh
->
vb_vidq
,
buf
,
count
,
pos
,
0
,
filp
->
f_flags
&
O_NONBLOCK
);
...
...
@@ -1761,7 +1767,11 @@ static unsigned int em28xx_v4l2_poll(struct file *filp, poll_table * wait)
if
(
rc
<
0
)
return
rc
;
if
(
unlikely
(
res_get
(
fh
)
<
0
))
mutex_lock
(
&
dev
->
lock
);
rc
=
res_get
(
fh
);
mutex_unlock
(
&
dev
->
lock
);
if
(
unlikely
(
rc
<
0
))
return
POLLERR
;
if
(
V4L2_BUF_TYPE_VIDEO_CAPTURE
!=
fh
->
type
)
...
...
@@ -1779,13 +1789,17 @@ static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
struct
em28xx
*
dev
=
fh
->
dev
;
int
rc
;
if
(
unlikely
(
res_get
(
fh
)
<
0
))
return
-
EBUSY
;
rc
=
check_dev
(
dev
);
if
(
rc
<
0
)
return
rc
;
mutex_lock
(
&
dev
->
lock
);
rc
=
res_get
(
fh
);
mutex_unlock
(
&
dev
->
lock
);
if
(
unlikely
(
rc
<
0
))
return
rc
;
rc
=
videobuf_mmap_mapper
(
&
fh
->
vb_vidq
,
vma
);
em28xx_videodbg
(
"vma start=0x%08lx, size=%ld, ret=%d
\n
"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录