Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
009e577e
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
009e577e
编写于
12月 06, 2007
作者:
M
Matthew Wilcox
提交者:
Matthew Wilcox
12月 06, 2007
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add wait_for_completion_killable
Signed-off-by:
N
Matthew Wilcox
<
willy@linux.intel.com
>
上级
1411d5a7
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
14 addition
and
2 deletion
+14
-2
include/linux/completion.h
include/linux/completion.h
+1
-0
kernel/sched.c
kernel/sched.c
+13
-2
未找到文件。
include/linux/completion.h
浏览文件 @
009e577e
...
...
@@ -44,6 +44,7 @@ static inline void init_completion(struct completion *x)
extern
void
wait_for_completion
(
struct
completion
*
);
extern
int
wait_for_completion_interruptible
(
struct
completion
*
x
);
extern
int
wait_for_completion_killable
(
struct
completion
*
x
);
extern
unsigned
long
wait_for_completion_timeout
(
struct
completion
*
x
,
unsigned
long
timeout
);
extern
unsigned
long
wait_for_completion_interruptible_timeout
(
...
...
kernel/sched.c
浏览文件 @
009e577e
...
...
@@ -3881,8 +3881,10 @@ do_wait_for_common(struct completion *x, long timeout, int state)
wait
.
flags
|=
WQ_FLAG_EXCLUSIVE
;
__add_wait_queue_tail
(
&
x
->
wait
,
&
wait
);
do
{
if
(
state
==
TASK_INTERRUPTIBLE
&&
signal_pending
(
current
))
{
if
((
state
==
TASK_INTERRUPTIBLE
&&
signal_pending
(
current
))
||
(
state
==
TASK_KILLABLE
&&
fatal_signal_pending
(
current
)))
{
__remove_wait_queue
(
&
x
->
wait
,
&
wait
);
return
-
ERESTARTSYS
;
}
...
...
@@ -3942,6 +3944,15 @@ wait_for_completion_interruptible_timeout(struct completion *x,
}
EXPORT_SYMBOL
(
wait_for_completion_interruptible_timeout
);
int
__sched
wait_for_completion_killable
(
struct
completion
*
x
)
{
long
t
=
wait_for_common
(
x
,
MAX_SCHEDULE_TIMEOUT
,
TASK_KILLABLE
);
if
(
t
==
-
ERESTARTSYS
)
return
t
;
return
0
;
}
EXPORT_SYMBOL
(
wait_for_completion_killable
);
static
long
__sched
sleep_on_common
(
wait_queue_head_t
*
q
,
int
state
,
long
timeout
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录