Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
c531e836
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
c531e836
编写于
2月 08, 2011
作者:
T
Thomas Gleixner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
genirq: Move IRQ_SUSPENDED to core
No users outside of core. Signed-off-by:
N
Thomas Gleixner
<
tglx@linutronix.de
>
上级
6e40262e
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
9 addition
and
9 deletion
+9
-9
include/linux/irq.h
include/linux/irq.h
+0
-2
kernel/irq/internals.h
kernel/irq/internals.h
+2
-0
kernel/irq/manage.c
kernel/irq/manage.c
+4
-4
kernel/irq/pm.c
kernel/irq/pm.c
+3
-3
未找到文件。
include/linux/irq.h
浏览文件 @
c531e836
...
...
@@ -60,7 +60,6 @@ typedef void (*irq_flow_handler_t)(unsigned int irq,
#define IRQ_MASKED 0x00002000
/* DEPRECATED */
#endif
#define IRQ_LEVEL 0x00004000
/* IRQ level triggered */
#define IRQ_PER_CPU 0x00010000
/* IRQ is per CPU */
#define IRQ_NOPROBE 0x00020000
/* IRQ is not valid for probing */
...
...
@@ -71,7 +70,6 @@ typedef void (*irq_flow_handler_t)(unsigned int irq,
#define IRQ_NO_BALANCING 0x00400000
/* IRQ is excluded from balancing */
#define IRQ_MOVE_PCNTXT 0x01000000
/* IRQ migration from process context */
#define IRQ_AFFINITY_SET 0x02000000
/* IRQ affinity was set from userspace*/
#define IRQ_SUSPENDED 0x04000000
/* IRQ has gone through suspend sequence */
#define IRQ_NESTED_THREAD 0x10000000
/* IRQ is nested into another, no own handler thread */
#define IRQF_MODIFY_MASK \
...
...
kernel/irq/internals.h
浏览文件 @
c531e836
...
...
@@ -48,6 +48,7 @@ enum {
* IRQS_DISABLED - irq is disabled
* IRQS_PENDING - irq is pending and replayed later
* IRQS_MASKED - irq is masked
* IRQS_SUSPENDED - irq is suspended
*/
enum
{
IRQS_AUTODETECT
=
0x00000001
,
...
...
@@ -60,6 +61,7 @@ enum {
IRQS_DISABLED
=
0x00000100
,
IRQS_PENDING
=
0x00000200
,
IRQS_MASKED
=
0x00000400
,
IRQS_SUSPENDED
=
0x00000800
,
};
#define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data)
...
...
kernel/irq/manage.c
浏览文件 @
c531e836
...
...
@@ -326,7 +326,7 @@ void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend)
if
(
suspend
)
{
if
(
!
desc
->
action
||
(
desc
->
action
->
flags
&
IRQF_NO_SUSPEND
))
return
;
desc
->
status
|=
IRQ
_SUSPENDED
;
desc
->
istate
|=
IRQS
_SUSPENDED
;
}
if
(
!
desc
->
depth
++
)
...
...
@@ -388,7 +388,7 @@ EXPORT_SYMBOL(disable_irq);
void
__enable_irq
(
struct
irq_desc
*
desc
,
unsigned
int
irq
,
bool
resume
)
{
if
(
resume
)
{
if
(
!
(
desc
->
status
&
IRQ
_SUSPENDED
))
{
if
(
!
(
desc
->
istate
&
IRQS
_SUSPENDED
))
{
if
(
!
desc
->
action
)
return
;
if
(
!
(
desc
->
action
->
flags
&
IRQF_FORCE_RESUME
))
...
...
@@ -396,7 +396,7 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume)
/* Pretend that it got disabled ! */
desc
->
depth
++
;
}
desc
->
status
&=
~
IRQ
_SUSPENDED
;
desc
->
istate
&=
~
IRQS
_SUSPENDED
;
}
switch
(
desc
->
depth
)
{
...
...
@@ -405,7 +405,7 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume)
WARN
(
1
,
KERN_WARNING
"Unbalanced enable for IRQ %d
\n
"
,
irq
);
break
;
case
1
:
{
if
(
desc
->
status
&
IRQ
_SUSPENDED
)
if
(
desc
->
istate
&
IRQS
_SUSPENDED
)
goto
err_out
;
/* Prevent probing on this irq: */
desc
->
status
|=
IRQ_NOPROBE
;
...
...
kernel/irq/pm.c
浏览文件 @
c531e836
...
...
@@ -18,7 +18,7 @@
* During system-wide suspend or hibernation device drivers need to be prevented
* from receiving interrupts and this function is provided for this purpose.
* It marks all interrupt lines in use, except for the timer ones, as disabled
* and sets the IRQ_SUSPENDED flag for each of them.
* and sets the IRQ
S
_SUSPENDED flag for each of them.
*/
void
suspend_device_irqs
(
void
)
{
...
...
@@ -34,7 +34,7 @@ void suspend_device_irqs(void)
}
for_each_irq_desc
(
irq
,
desc
)
if
(
desc
->
status
&
IRQ
_SUSPENDED
)
if
(
desc
->
istate
&
IRQS
_SUSPENDED
)
synchronize_irq
(
irq
);
}
EXPORT_SYMBOL_GPL
(
suspend_device_irqs
);
...
...
@@ -43,7 +43,7 @@ EXPORT_SYMBOL_GPL(suspend_device_irqs);
* resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs()
*
* Enable all interrupt lines previously disabled by suspend_device_irqs() that
* have the IRQ_SUSPENDED flag set.
* have the IRQ
S
_SUSPENDED flag set.
*/
void
resume_device_irqs
(
void
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录