找回密码
 注册
关于网站域名变更的通知
查看: 277|回复: 1
打印 上一主题 下一主题

Linux动态频率调节系统CPUFreq之cpufreq_governor的注册

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-10-24 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
注册cpufreq_governor
' {! n( w$ J5 p8 a2 T7 e$ b( ]6 x4 _3 W- k
8 t5 x5 h( E8 U' C* S$ X- |. z3 M
系统中可以同时存在多个governor策略,一个policy通过cpufreq_policy结构中的governor指针和某个governor相关联。要想一个governor被policy使用,首先要把该governor注册到cpufreq的核心中,我们可以通过核心层提供的API来完成注册:5 F1 A/ R. t( t5 l
/ Z2 B8 l/ T, R9 p) \
. q8 F% I% Z6 U% P
  • int cpufreq_register_governor(struct cpufreq_governor *governor)
  • {
  •         int err;
  •         ......
  •         governor->initialized = 0;
  •         err = -EBUSY;
  •         if (__find_governor(governor->name) == NULL) {
  •                 err = 0;
  •                 list_add(&governor->governor_list, &cpufreq_governor_list);
  •         }
  •         ......
  •         return err;
  • }/ x' {4 j9 e9 N

8 K$ v: f. X4 _* \! {" K5 S5 z# n; `5 j  S+ A

  T3 R6 I- n' }3 X0 H0 r$ D! }5 E, |: v* s2 i4 p8 a* p" B' ]
& U. h( J; G6 S: h8 _! e: _* }
核心层定义了一个全局链表变量:cpufreq_governor_list,注册函数首先根据governor的名称,通过__find_governor()函数查找该governor是否已經被注册过,如果没有被注册过,则把代表该governor的结构体添加到cpufreq_governor_list链表中。在上一篇中我们提到,目前的内核版本提供了5种governor供我们使用,我们可以通过内核的配置項来选择需要编译的governor,同时需要指定一个默认的governor。在cpufreq.h中,将会根据配置項的选择,把CPUFREQ_DEFAULT_GOVERNOR宏指向默认governor结构体变量的地址,在注册cpufreq_driver的阶段需要使用这个宏来设定系统默认使用的governor。' a. v) i7 E1 L1 ?

/ o$ ^/ I8 D& I7 n( R+ P9 e

0 c  M6 K4 r! Q8 e& L% j2 B" h5 Q
( ?. W. u7 ^9 _% E  D
% K5 P9 U3 x. c6 L0 y$ s( }0 Z
3 |  c7 p$ s+ ]+ u4 r- o9 S* W+ W8 X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-24 11:31 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表