|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Linux动态频率调节系统CPUFreq之了解一下其它的API0 f' C& P# T% R5 R# p6 r
* h. O; n$ f' M! w0 s7 J# G% a3 F# L, p) D' Q& d; p
cpufreq的核心层除了提供上面几节讨论的注册governor,注册cpufreq_driver等API外,还提供了其他一些辅助的API,以方便其它模块的使用。
8 |5 m) \; E4 h2 v1 P/ v5 J! u5 ^' q6 S( @* K G! |1 r. n
3 X, H+ m7 S( ]' q' T+ r- int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list);
- int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list);4 ~$ ?: h$ f/ f8 B8 T: ?; g3 d
) ]. E# H7 c7 c! G" @$ K6 A, X ~- a7 H
5 u q: r8 o, O! h) [& Z以上两个API用于注册和注销cpufreq系统的通知消息,第二个参数可以选择通知的类型,可以有以下两种类型:
/ r7 N9 `) Y3 a8 V& U% @3 v$ Q+ r
' j+ K% s- f# g7 f
- CPUFREQ_TRANSITION_NOTIFIER 收到频率变更通知
- CPUFREQ_POLICY_NOTIFIER 收到policy更新通知- v% W. ], m2 F; Y) l
' p5 N5 O+ g/ G9 \
2 c3 t: U) X6 W1 b. |" W l
* a. s0 ]' H) |$ f8 P
- int cpufreq_driver_target(struct cpufreq_policy *policy,; f( @( I3 s, W9 j" [! F" J% \
x, {: S0 g% V/ f3 s3 T6 |& T& Y
unsigned int target_freq, [( ~+ i; O X# y
unsigned int relation);7 {4 S! T9 V9 d' Z. i ~
- int __cpufreq_driver_target(struct cpufreq_policy *policy,# y" K/ d3 y/ Z0 y7 f/ ?4 i
2 d/ x- r6 X+ B5 f unsigned int target_freq,: W( T" r+ [3 P
unsigned int relation);( ^$ E6 n6 G B! w' Z) ^- _
2 C& n; I3 H( y9 I. P
b9 W3 D7 T& O- Q, D: g7 [0 f
以上两个API用来设置cpu的工作频率,区别在于cpufreq_driver_target是带锁的版本,而__cpufreq_driver_target是不带锁的版本,如果确定是在governor的上下文中,使用不带锁的版本,否则需要使用带锁的版本。
, ]! y% U' W4 B% V% Y7 b# t2 H i: m6 s2 _, o/ K( `
* {& n# n/ E3 [' I- X- I8 i- A- u
- void cpufreq_verify_within_limits(struct cpufreq_policy *policy, unsigned int min, unsigned int max);
, p( V4 V5 @& j1 A
5 k0 |+ B0 N I2 ^
8 M* |0 d" J% a* I% _( {; v; p
: h: N' N8 c+ n, }; e y4 x这个API用来检查并重新设定policy的最大和最小频率。0 v8 q4 L# c0 p! ]) k. D5 F
( k% \* \0 s+ f. R5 U- y- s9 Q" u& k/ b' K- C% _: l+ E# y# p
- int cpufreq_update_policy(unsigned int cpu);
' e0 W) _& \4 D7 W$ U
4 A7 B: t/ H1 l2 z
4 D% X# U4 T% w! E0 @8 ]
5 N$ T1 O* Q2 v: H9 m这个API用来触发cpufreq核心进行policy的更新操作。8 G: |% h+ _, r" p$ Q- G
; |' [6 c$ Z @2 k# s, d* L. \" ^& ]8 L- Z9 |* j
' X. p, O, o+ I8 e$ c$ g& o- b, L7 l0 \7 `" q# r
0 ]3 G( N: g0 f8 Q" {+ y7 n
. k3 G' ^7 z- Z" J6 `8 e
# f" W0 J7 |1 ~( J
0 `9 T; X& |$ s5 n3 l5 J M
8 u+ M6 G# X3 ^9 I" F7 m0 B: s# X/ D# C, Q7 g& M
|
|