Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
319362c9
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
319362c9
编写于
5月 19, 2015
作者:
P
Paul E. McKenney
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rcu: Provide more diagnostics for stalled GP kthread
Signed-off-by:
N
Paul E. McKenney
<
paulmck@linux.vnet.ibm.com
>
上级
d770e558
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
3 deletion
+13
-3
kernel/rcu/tree.c
kernel/rcu/tree.c
+8
-2
kernel/rcu/tree.h
kernel/rcu/tree.h
+5
-1
未找到文件。
kernel/rcu/tree.c
浏览文件 @
319362c9
...
...
@@ -1178,9 +1178,11 @@ static void rcu_check_gp_kthread_starvation(struct rcu_state *rsp)
j
=
jiffies
;
gpa
=
READ_ONCE
(
rsp
->
gp_activity
);
if
(
j
-
gpa
>
2
*
HZ
)
pr_err
(
"%s kthread starved for %ld jiffies! g%lu c%lu f%#x
\n
"
,
pr_err
(
"%s kthread starved for %ld jiffies! g%lu c%lu f%#x
s%d ->state=%#lx
\n
"
,
rsp
->
name
,
j
-
gpa
,
rsp
->
gpnum
,
rsp
->
completed
,
rsp
->
gp_flags
);
rsp
->
gpnum
,
rsp
->
completed
,
rsp
->
gp_flags
,
rsp
->
gp_state
,
rsp
->
gp_kthread
?
rsp
->
gp_kthread
->
state
:
0
);
}
/*
...
...
@@ -2041,6 +2043,7 @@ static int __noreturn rcu_gp_kthread(void *arg)
wait_event_interruptible
(
rsp
->
gp_wq
,
READ_ONCE
(
rsp
->
gp_flags
)
&
RCU_GP_FLAG_INIT
);
rsp
->
gp_state
=
RCU_GP_DONE_GPS
;
/* Locking provides needed memory barrier. */
if
(
rcu_gp_init
(
rsp
))
break
;
...
...
@@ -2073,6 +2076,7 @@ static int __noreturn rcu_gp_kthread(void *arg)
(
!
READ_ONCE
(
rnp
->
qsmask
)
&&
!
rcu_preempt_blocked_readers_cgp
(
rnp
)),
j
);
rsp
->
gp_state
=
RCU_GP_DONE_FQS
;
/* Locking provides needed memory barriers. */
/* If grace period done, leave loop. */
if
(
!
READ_ONCE
(
rnp
->
qsmask
)
&&
...
...
@@ -2110,7 +2114,9 @@ static int __noreturn rcu_gp_kthread(void *arg)
}
/* Handle grace-period end. */
rsp
->
gp_state
=
RCU_GP_CLEANUP
;
rcu_gp_cleanup
(
rsp
);
rsp
->
gp_state
=
RCU_GP_CLEANED
;
}
}
...
...
kernel/rcu/tree.h
浏览文件 @
319362c9
...
...
@@ -527,7 +527,11 @@ struct rcu_state {
/* Values for rcu_state structure's gp_flags field. */
#define RCU_GP_WAIT_INIT 0
/* Initial state. */
#define RCU_GP_WAIT_GPS 1
/* Wait for grace-period start. */
#define RCU_GP_WAIT_FQS 2
/* Wait for force-quiescent-state time. */
#define RCU_GP_DONE_GPS 2
/* Wait done for grace-period start. */
#define RCU_GP_WAIT_FQS 3
/* Wait for force-quiescent-state time. */
#define RCU_GP_DONE_FQS 4
/* Wait done for force-quiescent-state time. */
#define RCU_GP_CLEANUP 5
/* Grace-period cleanup started. */
#define RCU_GP_CLEANED 6
/* Grace-period cleanup complete. */
extern
struct
list_head
rcu_struct_flavors
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录