EDA365电子论坛网

标题: Linux动态频率调节系统CPUFreq之CPUFreq子系统的初始化 [打印本页]

作者: mytomorrow    时间: 2019-10-23 09:48
标题: Linux动态频率调节系统CPUFreq之CPUFreq子系统的初始化
- @' O* F  e0 H) K5 v6 j
CPUFreq子系统的初始化) `4 n7 z" F9 q' h

. m0 h2 q5 o: R先看看具体的代码:; Z  T' [, a- m
, R  a. d9 r" z. P* g+ E7 q! q1 y. x6 I
    ! ^7 U4 E& m  d; B1 `: U3 [% M
8 \1 C# s/ u; l

7 K4 \# @- ^9 k' x% j! |9 x可见,在系统的启动阶段,经由initcall机制,cpufreq_core_init被调用,由它来完成核心部分的初始化工作,其中:

' A7 I' Z9 D4 h0 ?% y% A4 ]cpufreq_policy_cpu    是一个per_cpu变量,在smp的系统下,每个cpu可以有自己独立的调频policy,也可以所有的cpu都是用一种policy,这时候就有可能出现其中一个cpu管理着某个policy,而其它cpu因为也使用同一个policy,这些cpu的policy的就交由那个管理cpu代管,这个per_cpu变量就是用来记录各个cpu的policy实际上是由那个cpu进行管理的。初始化时都被初始化为-1了,代表现在还没有开始进行policy的管理。# l' s' b/ I: d. x. x5 Z

: s* {4 L' H7 y% x: K* d- S% m接下来的kobject_create_and_add函数在/sys/devices/system/cpu这个节点下建立了一个cpufreq节点,该节点的下面以后会用来放置当前governor的一些配置参数。参数cpu_subsys是内核的一个全局变量,是由更早期的初始化时初始化的,代码在drivers/base/cpu.c中:
1 V; c( v5 U# h& A% o% i3 f
7 K; ]' R- H* n+ K. d4 g( Y

+ G$ v; @' Q8 L* N5 C' x& _1 ?1 r3 U/ F+ G

, i; }9 e& Y. I6 B, A+ \$ I$ L, j2 H6 M5 \, [2 h7 i  O

% Z0 y3 k6 A2 z' n, |! a& c/ p+ L% v' z

作者: Demyar    时间: 2019-10-24 19:51
看看。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2