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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
注册cpufreq_governor
# y8 m% |' ^, ~2 I" k
! m+ t( i+ Z7 q% [
& v" Q5 S! V7 y8 A/ U8 _
系统中可以同时存在多个governor策略,一个policy通过cpufreq_policy结构中的governor指针和某个governor相关联。要想一个governor被policy使用,首先要把该governor注册到cpufreq的核心中,我们可以通过核心层提供的API来完成注册:! [9 S  @! Z" k, M3 W  E  Z
3 d6 O. n3 B2 f1 Z5 R1 ]! d* |

) F; o+ n, g0 W
  • 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;
  • }* |+ h$ M% f. |0 k  D

) Y' t# Z3 X6 O) C% B# E5 n* {% D  u/ _% O  j
; ~7 E8 H# `( ~7 M& t
" a8 I7 u4 y, n5 @# l' X

8 P# M* Y& Y/ `9 _3 U+ Q核心层定义了一个全局链表变量:cpufreq_governor_list,注册函数首先根据governor的名称,通过__find_governor()函数查找该governor是否已經被注册过,如果没有被注册过,则把代表该governor的结构体添加到cpufreq_governor_list链表中。在上一篇中我们提到,目前的内核版本提供了5种governor供我们使用,我们可以通过内核的配置項来选择需要编译的governor,同时需要指定一个默认的governor。在cpufreq.h中,将会根据配置項的选择,把CPUFREQ_DEFAULT_GOVERNOR宏指向默认governor结构体变量的地址,在注册cpufreq_driver的阶段需要使用这个宏来设定系统默认使用的governor。
; F! Z1 t- D0 b+ C
3 b# G+ |; h# m/ C8 d; \0 {
- P0 G0 X" v4 j4 b+ |

) l/ t& C3 j: P0 F4 u9 I# d# h5 {. @
! N% ?7 @+ @7 x  r( a
1 }: Y4 P+ X9 h* m% a4 {; u0 t' J' k% l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 01:48 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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