enable_irq_wake是如何起作用的
来源:互联网 发布:淘宝推广平台哪个好 编辑:程序博客网 时间:2024/06/05 07:36
enable_irq_wake是如何起作用的
在linux kernel中,调用enable_irq_wake函数,可以将一个irq具有唤醒系统的功能,即把系统从低功耗模式中唤醒,如从suspend to RAM中唤醒。
enable_irq_wake具体如何起作用的呢,今天来学习学习。
先从函数enable_irq_wake开始,实现很简单:
函数irq_set_irq_wake的实现也不是很复杂,并且有注释说明,容易理解:
其中关键的代码是计数:desc->wake_depth++, 以及调用函数set_irq_wake_real。
set_irq_wake_real函数调用到了具体cpu相关的代码:
irq_set_wake为cpu相关代码。
例如,xxx cpu对应的arch\arm\mach-xxx\Irq.c文件中,xxx_init_irq函数中有如下语句:
xxx_gic_irq_set_wake的实现将irq mask,结果保存在一个数组中gpc_wake_irq。
cpu在做power on/off时会使用到该数组。
如mach-xxx\system.c中的函数xxx_cpu_lp_set中有如下代码:
函数gpc_set_wakeup的实现:
将irq mask设置到了cpu中。
中cpu的suspend enter函数中,会调用xxx_cpu_lp_set函数。
如xxx_suspend_enter函数中有如下代码:
至此,流程基本清晰了。
enable_irq_wake函数会将irq mask到一个数组。
在进入suspend时,会将irq mask写入到cpu。
也就是告诉cpu哪些irq可以将其从睡眠中唤醒。
- 顶
- 4
- 踩
- enable_irq_wake是如何起作用的
- enable_irq_wake是如何起作用的
- 【转】enable_irq_wake是如何起作用的
- Bootstraps 的12列网格布局是如何起作用的:
- log4j.xml 这个文件是如何起作用的
- 由自定义标签了解标签是如何起作用的
- Ogre的渲染流程,在渲染时材质是如何起作用的,材质加载和解析
- Ogre的渲染流程,在渲染时材质是如何起作用的,材质加载和解析
- enable_irq_wake
- enable_irq_wake
- enable_irq_wake
- enable_irq_wake
- enable_irq_wake
- enable_irq_wake
- enable_irq_wake()
- enable_irq_wake
- Spring IOC学习心得之BeanPostProcessor,BeanNameAware,BeanClassLoaderAware,BeanFactoryAware接口是如何起作用的
- enable_irq_wake(IRQ_EINT1) 与 enable_irq(IRQ_EINT1)的区别
- Android 热敏打印 文本
- ArcGIS Server网络分析服务的发布与测试
- 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理
- 在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?
- eclipse如何为java项目生成API文档、JavaDoc
- enable_irq_wake是如何起作用的
- NAT穿透(UDP打洞)
- java中System.getProperty()方法详解
- 单调栈
- leetcode 166. Fraction to Recurring Decimal 循环小数的展开
- Java多线程总结之线程安全队列Queue
- 智能照明:蓝牙5.0将打败ZigBee?
- Java String、StringBuffer、StringBuilder
- Mapper.xml文件中如何判断多个参数不为空和null