司延腾 Yanteng Si <siyanteng@loongson.cn>
-.. _cn_core.rst:
+:校译:
+
+ 唐艺舟 Tang Yizhou <tangyeechou@gmail.com>
====================================
CPUFreq核心和CPUFreq通知器的通用说明
======================
cpufreq核心代码位于drivers/cpufreq/cpufreq.c中。这些cpufreq代码为CPUFreq架构的驱
-å\8a¨ç¨\8båº\8fï¼\88é\82£äº\9bæ\93\8dä½\9c硬件å\88\87æ\8d¢é¢\91ç\8e\87ç\9a\84代ç \81ï¼\89以å\8f\8a "é\80\9aç\9f¥å\99¨ "提供了一个标准化的接口。
-这些是设备驱动程序或需要了解策略变化的其它内核部分(如 ACPI 热量管理)或所有频率更改(除
-计时代码外),甚至需要强制确定速度限制的通知器(如 ARM 架构上的 LCD 驱动程序)。
-此外, 内核 "常数" loops_per_jiffy会根据频率变化而更新。
+å\8a¨ç¨\8båº\8fï¼\88é\82£äº\9bæ\89§è¡\8c硬件é¢\91ç\8e\87å\88\87æ\8d¢ç\9a\84代ç \81ï¼\89以å\8f\8a "é\80\9aç\9f¥å\99¨" 提供了一个标准化的接口。
+包括设备驱动程序;需要了解策略变化(如 ACPI 热量管理),或所有频率变化(如计时代码),
+甚至需要强制限制为指定频率(如 ARM 架构上的 LCD 驱动程序)的其它内核组件。
+此外,内核 "常数" loops_per_jiffy 会根据频率变化而更新。
cpufreq策略的引用计数由 cpufreq_cpu_get 和 cpufreq_cpu_put 来完成,以确保 cpufreq 驱
动程序被正确地注册到核心中,并且驱动程序在 cpufreq_put_cpu 被调用之前不会被卸载。这也保证
2. CPUFreq 通知器
====================
-CPUFreq通知器符合标准的内核通知器接口。
+CPUFreq通知器遵循标准的内核通知器接口。
关于通知器的细节请参阅 linux/include/linux/notifier.h。
这里有两个不同的CPUfreq通知器 - 策略通知器和转换通知器。
第三个参数是一个包含如下值的结构体cpufreq_freqs:
-===== ====================
-cpu 受影响cpu的编号
+====== ===============================
+policy 指向struct cpufreq_policy的指针
old 旧频率
new 新频率
flags cpufreq驱动的标志
-===== ====================
+====== ===============================
3. 含有Operating Performance Point (OPP)的CPUFreq表的生成
==================================================================
关于OPP的细节请参阅 Documentation/power/opp.rst
dev_pm_opp_init_cpufreq_table -
- è¿\99个å\8a\9fè\83½æ\8f\90ä¾\9bäº\86ä¸\80个é\9a\8fæ\97¶å\8f¯ç\94¨ç\9a\84转æ\8d¢ç¨\8båº\8fï¼\8cç\94¨æ\9d¥å°\86OPPå±\82å\85³äº\8eå\8f¯ç\94¨é¢\91ç\8e\87ç\9a\84å\86\85é\83¨ä¿¡æ\81¯ç¿»è¯\91æ\88\90ä¸\80ç§\8d容æ\98\93æ\8f\90ä¾\9bç»\99
- cpufreq的格式。
+ è¿\99个å\87½æ\95°æ\8f\90ä¾\9bäº\86ä¸\80个é\9a\8fæ\97¶å\8f¯ç\94¨ç\9a\84转æ\8d¢ä¾\8bç¨\8bï¼\8cç\94¨æ\9d¥å°\86OPPå±\82å\85³äº\8eå\8f¯ç\94¨é¢\91ç\8e\87ç\9a\84å\86\85é\83¨ä¿¡æ\81¯ç¿»è¯\91æ\88\90ä¸\80ç§\8d
+ cpufreq易于处理的格式。
.. Warning::