新闻详情

新闻详情

首页 / 资讯中心 / 详情

linux的runtime pm系统总结

发布时间:2026/10/2 8:18:04来源:尧图网络
linux的runtime pm系统总结
是什么runtime pm运行时电源管理是一种功耗管理策略它用于设备不活跃时关闭它的时钟和电源。怎么用1 启动设备的runtime pm设备驱动初始化probe函数中调用pm_runtime_enable()2关闭设备的runtime pm设备驱动的卸载remove函数中调用pm_runtime_disable()3进入低功耗模式开发者调用pm_runtime_put()或者pm_runtime_put_sync(),请求将设备置于低功耗模式。这里只是请求还未真正进入低功耗4退出低功耗开发者调用pm_runtime_get()或者pm_runtime_get_sync(),请求将设备退出低功耗模式。这里只是请求还未真正退出低功耗5系统级休眠唤醒pm_runtime_force_suspend()在系统准备休眠时调用。它会强制设备进入运行时挂起状态即使设备当前的使用计数usage_count不为零。它会调用驱动的 .runtime_suspend() 回调并记录设备的状态以便在唤醒时决定是否需要恢复pm_runtime_force_resume()在系统唤醒时调用。它用于撤销 pm_runtime_force_suspend() 的操作在必要时调用驱动的 .runtime_resume() 回调恢复设备状态原理决定设备能否进入低功耗的要素是设备的引用计数dev-power.usage_count。从“计数归零”到“真正挂起”的流程计数归零后PM 核心会按顺序尝试以下步骤任何一步不满足挂起就不会发生1执行 runtime_idle 回调PM 核心会调用驱动或子系统的 .runtime_idle 回调。这个回调是一个“缓冲”它的职责是检查设备是否真的空闲并决定是否要安排一次挂起。它本身不应该直接关闭硬件资源。2检查挂起条件即使 runtime_idle 决定继续PM 核心还会检查多个条件例如1运行时 PM 是否被用户空间禁用disable_depth 0。2设备是否有仍在活跃的子设备child_count 0。3是否有其他内核组件通过 QoS 机制阻止了设备断电。3执行 runtime_suspend 回调只有当以上检查都通过PM 核心才会最终调用 .runtime_suspend 回调来执行真正的挂起操作如关闭时钟、断电设备唤醒流程1内核会在工作队列中排队一个工作项来处理唤醒请求。2该工作项最终会调用设备驱动的 .runtime_resume 回调执行真正的硬件唤醒操作如上电、开时钟。3唤醒完成后设备的 Runtime PM 状态会变为 RPM_ACTIVE。4.接口说明1pm_runtime_put()只减少了设备的引用计数。当减少到0时会触发一次异步的空闲检查请求只是把检查是否空闲的工作项排入到PM工作队列然后就返回了。2pm_runtime_put_sync()减少引用计数之后会等待挂起流程结束之后才返回。返回结果可能挂起成功或不满足条件而挂起失败。3pm_runtime_get()只是增加了设备的引用计数并异步请求唤醒设备它会发起一个异步的唤醒请求通过向 PM 工作队列中排队一个工作项来实现然后函数立即返回。4pm_runtime_get_sync()增加了设备的引用计数会等待唤醒流程结束之后才返回。返回结果可能唤醒成功或不满足条件而唤醒失败。5xxxx_sync()不能在中断中使用。6pm_runtime_set_active()将设备的运行时 PM 状态设置为“活跃通常是 pm_runtime_enable 的前置步骤。它确保在运行时 PM 功能正式开启前设备的初始状态是正确的即如果硬件是开着的软件状态也应该是活跃7pm_runtime_set_suspend()将设备的运行时 PM 状态设置为“已挂起”会先 pm_runtime_disable() 禁用运行时 PM然后调用 pm_runtime_set_suspended() 将状态重置为挂起并释放父设备或供应商的引用确保资源完全释放。8pm_runtime_idle()发起一次空闲检查并且等待挂起设备流程执行结束才返回。9pm_runtime_put_noidle()原子性的减少设备引用计数但不会触发空闲检查或挂起请求。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Spring Boot社区健康管理系统开发实战:从数据库设计到远程调试 2026/10/2 8:57:17

Spring Boot社区健康管理系统开发实战:从数据库设计到远程调试

最近帮学弟学妹看毕业设计,被问得最多的就是基于Spring Boot的社区健康管理系统。这类题目看起来是标准的管理系统CRUD,但真要把源码包、文档梳理清楚,再配合远程调试把项目在自己电脑上跑起来,隐藏的小坑多得超乎想象。这篇我就把…

阅读更多 →
GEO优化实战:让AI搜索引擎主动引用你的网站内容 2026/10/2 8:57:17

GEO优化实战:让AI搜索引擎主动引用你的网站内容

1. 2026年最值得警惕的“隐形危机”:搜索引擎排名靠前,AI答案里却没有你先说一个我最近真实遇到的事。我一个做工业检测设备的客户,官网在Google的“工业检测设备”这个核心词上排到首页前三,自然流量数据好看得不行。但从2025年年…

阅读更多 →
深度强化学习求解机组组合:MDP建模与开源实现 2026/10/2 8:57:17

深度强化学习求解机组组合:MDP建模与开源实现

简介:这份开源项目面向电力系统调度、能源管理与强化学习方向的研究生、算法工程师及科研人员,聚焦机组组合这一经典优化难题。机组组合需在满足负荷需求与设备约束的前提下安排各类型机组的启停与出力计划,以最小化运行成本,而深…

阅读更多 →
IDM报无法登录FTP服务器?一篇讲透排查与修复方法 2026/10/2 8:57:17

IDM报无法登录FTP服务器?一篇讲透排查与修复方法

用IDM(Internet Download Manager)去FTP服务器拉文件,弹出一个“无法登录到FTP服务器”的提示,这个问题我遇到过的次数,比我自己以为的要多得多。很多人的第一反应是重新输入一遍账号密码,或者干脆换个IDM版…

阅读更多 →
O(logn)的本质是问题空间收缩,不是速度标签 2026/10/2 8:57:16

O(logn)的本质是问题空间收缩,不是速度标签

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
LeetCode 215:快速选择与堆求解第K大元素,打通TopN思路 2026/10/2 8:57:10

LeetCode 215:快速选择与堆求解第K大元素,打通TopN思路

刷了这么多年的题,Hot100 里能同时横跨“排序、堆、分治、快选”四个知识点的题其实不多,215题“数组中的第 K 个最大元素”算是最典型的一道。不管你是准备国内大厂面试,还是在系统设计里处理 TopN 问题,这道题的几种解法几乎就是…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉