http://leave001.blog.163.com/blog/static/16269129320117301213564/
所谓runtime suspend,就是说设备在空闲时进入suspend状态,不依赖android的wake lock机制,也就是不需要整个系统进入suspend状态。
kernnel使用pm线程来处理runtime suspend。

pm线程的创建(kernel/power/main.c):
pm_init() // 放在core_initcall中
  pm_start_workqueue()
    pm_wq = create_freezeable_workqueue("pm"); //创建了pm线程

runtime suspend流程:
目前我只看到usb core和某些网络驱动使用了该机制。以r8169.c为例,rtl8169_pm_ops挂载了runtime_suspend/runtime_resume/runtime_idle三个回调。这三个回调会由pm线程调用。

在rtl8169_check_link_status中,若检测到连接断开,则调用runtime提供的api来尝试进入suspend状态:
pm_schedule_suspend(&tp->pci_dev->dev, 100);

pm_schedule_suspend()中,若delay为0,则立刻往pm_wq线程中添加pm_runtime_work,否则修改struct device的power.suspend_timer,在timer超时后再执行以上动作。
pm_runtime_work delay work被执行,最终会执行dev->bus->pm->runtime_suspend(dev),即driver中注册的dev_pm_ops回调函数。

注释,在笔者目前的系统中,CONFIG_PM_RUNTIME是merge android-base.cfg and android-recommended.cfg之后才有的。可考虑去掉。
(在android-recommended.cfg中有CONFIG_PM_RUNTIME=y)

参考

http://www.360doc.com/content/11/1226/10/8157643_175034156.shtml

runtime suspend相关推荐

  1. linux runtime pm机制的深入理解

    一:runtime机制说明 何为runtime机制?也就是系统在非睡眠状态,设备在空闲时可以进入runtime suspend状态同时不依赖系统wake_lock机制,非空闲时执行runtime re ...

  2. Linux电源管理之Runtime PM

    作者简介:Loopers,码龄11年,喜欢研究内核基本原理 前言 什么是Runtime PM? Runtime PM (Runtime Power Management)翻译过来就是运行时电源管理.主 ...

  3. linux内核3.4基于wakeup_source的autosleep机制分析

    点击打开链接 一:wakeup_source简介: linux 3.4内核PM使用了wakeup_source来保持唤醒状态,也就是keep awake.之前android一直是基于Linux加入了w ...

  4. Linux驱动——mmc数据结构(二)

    Linux驱动--mmc数据结构(二) 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0   3. 参考博客: 2. [mmc subsystem] ...

  5. 待机时反复按Power键概率性重启-定位问题

    现象: 待机时反复按power键休眠会有概率性重启,概率 >= 50%,但连接USB线情况下不会出现,所有怀疑是系统进入休眠才发生了异常,取出mtklog看到有db产生,确实发生了KE(kern ...

  6. Linux _PM_OPS

    1. 前言 Linux电源管理中,相当多的部分是在处理Hibernate.Suspend.Runtime PM等功能.而这些功能都基于一套相似的逻辑,即"Power management i ...

  7. linux编译运行uart,Kindle4: 编译并运行upstream linux kernel – v4.4

    Kindle4官方提供的Linux  kernel版本为2.6.31, 已经算是很旧版本的kernel了.当前最新版本的linux kernel为4.5,而brillo-m10-dev arm emu ...

  8. Android电源管理介绍

    一.电源管理基础知识 1.1电源管理的几种状态 Android kernel源码中,定义了三种电源状态,在kernel/power/suspend.c中: 对应的宏定义/include/linux/s ...

  9. linux SPI驱动开发

    一,linux内核设备驱动分三类 1,字符设备驱动:按字节来访问设备,字符驱动负责驱动字符设备,这样的驱动通常实现open,close,read,write系统调用. 特点:操作的硬件,按照字节流形式 ...

最新文章

  1. Simulink触发子系统使用方法
  2. SAP CRM里使用BAdI阻止产品主数据保存的一种办法
  3. 看似简单的dual,其实深藏玄机
  4. 20191011:冒泡排序的改良版--Shaker排序
  5. 利用opencv中的级联分类器进行人脸检測-opencv学习(1)
  6. 关于android:layout_weight
  7. [HDU 1430] 魔板
  8. 智慧职教云答案在哪里找_智慧职教经济数学答案,智慧职教云答案在哪里找,智慧职教云答案去哪找...
  9. 北辰创业笔记:百度霸屏之长尾关键词是什么
  10. 世界首富马斯克的编程水平怎么样?
  11. 计算机英语性考任务答案,国开电大理工英语1单元自测7形考任务答案
  12. 前端如何创建好看的简洁的蒙版弹窗
  13. C语言:va_list
  14. 五·C语言之·操作符这么有趣的嘛?
  15. 免费使用chatgpt的网站集合:
  16. Apple Watch 的传感器
  17. Numpy中使用astype函数将字符串格式数据转换为数值数据类型
  18. 统计英文字符串里重复次数最多的单词JAVA
  19. 推荐一款图片放大不失真的软件-PhotoZoom
  20. 七、Linux入门之磁盘存储和文件系统

热门文章

  1. [PWN]/瑞士军刀
  2. [atcoder caddi2018]D.Harlequin——博弈论
  3. 关于自动驾驶车辆控制
  4. RedHat/CentOS8【OpenSSL】制作自签证书和 HTTPS 配置
  5. 简单的html登录注册页面
  6. php文件用什么软件打开?php运行环境如何打开php文件
  7. 如何证明地球是圆的呢
  8. ububtu安装谷歌浏览器+搜狗输入法+WPS+vscode+vim
  9. 设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符
  10. 云游武夷,智慧文旅促进旅游业发展