Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
50904a7d
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,发现更多精彩内容 >>
提交
50904a7d
编写于
4月 30, 2015
作者:
R
Rafael J. Wysocki
浏览文件
操作
浏览文件
下载
差异文件
Merge branches 'acpica', 'acpi-battery' and 'pm-cpuidle'
上级
9e9d55e6
61f8ff69
df8d9eea
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
15 deletion
+19
-15
drivers/acpi/sbs.c
drivers/acpi/sbs.c
+1
-1
drivers/cpuidle/cpuidle.c
drivers/cpuidle/cpuidle.c
+16
-0
kernel/sched/idle.c
kernel/sched/idle.c
+2
-14
未找到文件。
drivers/acpi/sbs.c
浏览文件 @
50904a7d
...
...
@@ -684,7 +684,7 @@ static int acpi_sbs_add(struct acpi_device *device)
if
(
!
sbs_manager_broken
)
{
result
=
acpi_manager_get_info
(
sbs
);
if
(
!
result
)
{
sbs
->
manager_present
=
0
;
sbs
->
manager_present
=
1
;
for
(
id
=
0
;
id
<
MAX_SBS_BAT
;
++
id
)
if
((
sbs
->
batteries_supported
&
(
1
<<
id
)))
acpi_battery_add
(
sbs
,
id
);
...
...
drivers/cpuidle/cpuidle.c
浏览文件 @
50904a7d
...
...
@@ -158,9 +158,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
int
entered_state
;
struct
cpuidle_state
*
target_state
=
&
drv
->
states
[
index
];
bool
broadcast
=
!!
(
target_state
->
flags
&
CPUIDLE_FLAG_TIMER_STOP
);
ktime_t
time_start
,
time_end
;
s64
diff
;
/*
* Tell the time framework to switch to a broadcast timer because our
* local timer will be shut down. If a local timer is used from another
* CPU as a broadcast timer, this call may fail if it is not available.
*/
if
(
broadcast
&&
tick_broadcast_enter
())
return
-
EBUSY
;
trace_cpu_idle_rcuidle
(
index
,
dev
->
cpu
);
time_start
=
ktime_get
();
...
...
@@ -169,6 +178,13 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
time_end
=
ktime_get
();
trace_cpu_idle_rcuidle
(
PWR_EVENT_EXIT
,
dev
->
cpu
);
if
(
broadcast
)
{
if
(
WARN_ON_ONCE
(
!
irqs_disabled
()))
local_irq_disable
();
tick_broadcast_exit
();
}
if
(
!
cpuidle_state_is_coupled
(
dev
,
drv
,
entered_state
))
local_irq_enable
();
...
...
kernel/sched/idle.c
浏览文件 @
50904a7d
...
...
@@ -81,7 +81,6 @@ static void cpuidle_idle_call(void)
struct
cpuidle_device
*
dev
=
__this_cpu_read
(
cpuidle_devices
);
struct
cpuidle_driver
*
drv
=
cpuidle_get_cpu_driver
(
dev
);
int
next_state
,
entered_state
;
unsigned
int
broadcast
;
bool
reflect
;
/*
...
...
@@ -150,17 +149,6 @@ static void cpuidle_idle_call(void)
goto
exit_idle
;
}
broadcast
=
drv
->
states
[
next_state
].
flags
&
CPUIDLE_FLAG_TIMER_STOP
;
/*
* Tell the time framework to switch to a broadcast timer
* because our local timer will be shutdown. If a local timer
* is used from another cpu as a broadcast timer, this call may
* fail if it is not available
*/
if
(
broadcast
&&
tick_broadcast_enter
())
goto
use_default
;
/* Take note of the planned idle state. */
idle_set_state
(
this_rq
(),
&
drv
->
states
[
next_state
]);
...
...
@@ -174,8 +162,8 @@ static void cpuidle_idle_call(void)
/* The cpu is no longer idle or about to enter idle. */
idle_set_state
(
this_rq
(),
NULL
);
if
(
broadcast
)
tick_broadcast_exit
()
;
if
(
entered_state
==
-
EBUSY
)
goto
use_default
;
/*
* Give the governor an opportunity to reflect on the outcome
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录