| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 一点点读懂thermal(一) -> 正文阅读 |
|
[系统运维]一点点读懂thermal(一) |
目录 2.4 关于critial事件和非critial事件的处理流程 1、thermal简介? ? ?thermal模块主要负责温度控制,温度低时想办法升温,温度高时想办法降温,甚至复位系统。Linux kernel有个通用的思想就是抽象分层,比如把该子系统所有资源和信息综合在一起的一层叫core层,不同的设备的操作叫device层,对设备的操作的屏蔽层叫driver层或者governor。同样thermal子系统也是采用了该思想:核心为 thermal_core,可以获取温度的设备抽象为 thermal_zone_device, 如Temp Sensor、NTC(板上的热敏电阻)等。控制温度的设备抽象为 thermal_cooling_device, 如风扇、CPU、DDR、GPU等。温控策略抽象为 thermal_governor,比如 step_wise、bang_bang 等。 ? ? ? ?thermal_cooling_device 对应系统实施冷却措施的驱动,是温控的执行者。cooling device 维护一个 cooling 等级,即 state,一般 state 越高即系统的冷却需求越高。cooling device 根据不同等级的冷却需求进行冷却行为。cooling device 只根据 state 进行冷却操作,是实施者,而 state 的计算由 thermal governor 完成。结构 struct cpufreq_cooling_device 和 struct devfreq_cooling_device 作为对 thermal_cooling_device 的扩展,分别主要在 cpufreq_cooling.c 和 devfreq_cooling.c?中使用。 2、thermal_core分析? ? ? ?thermal_core作为thermal的核心部分,负责把governor\cool device\zone_device关联在一起,因此thermal_core就需要提供注册接口和作为记录的全局变量来记录注册的信息: 2.1 zone_device注册相关接口2.1.1 关键结构体
2.1.2 接口1、thermal_zone_device_register:zone_device注册接口,需要注册时需要调用该接口来注册。该接口中主要实现以下功能: 1)给zone_device赋值critical接口,再温度过高时,critical接口负责重启系统 2)关联上匹配的governor 3)把该zone_device添加到thermal_tz_list中 4)给该zone_device绑定上相关的cooling_device 5)创建zone_device的温度监控任务 2、thermal_zone_device_unregister:zone_device去注册接口,需要去注册时需要调用该接口来注册。该接口实现的主要功能如下: 1)device从thermal_tz_list中删除 2)对应任务删除 3)对应的governor置空 2.2 Cooling_device注册相关接口2.2.1关键结构体
2.2.2 接口1、thermal_cooling_device_register:cooling_device注册接口,cooling_device_ops有3个非常重要的接口,分别是get_max_state、get_cur_state、set_cur_state,分别用于获取最大状态、获取当前状态、设置当前状态,关于state,前边第一节我们介绍了,就不再赘述。该接口实现的主要功能有: 1)添加该device到thermal_cdev_list中 2)Cooling_device与zone_device绑定 3)调用thermal_zone_device_update来更新温度及做对应处理 2、thermal_cooling_device_unregister:与thermal_cooling_device_register互为逆操作。 实现的主要功能有: 1)从hermal_cdev_list中删除该device 2)与zone device解绑定 2.3 Governors注册相关接口? ? ? ?Thermal的governor都是通过THERMAL_GOVERNOR_DECLARE定义到了__thermal_table_entry_这段空间内,然后在thermal core初始化时通过调用thermal_register_governors来注册到thermal_governor_list链表中。 thermal_init->thermal_register_governors->?thermal_set_governor(和zone device关联上) 2.4 关于critial事件和非critial事件的处理流程 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:35:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |