前面三节参考蜗窝大神的文章分析了Linux common clock framework的主要实现细节,本篇则是对前三篇从全局的一个整合说明。
common clock framework主要维护着四条链表
static HLIST_HEAD(clk_root_list);
static HLIST_HEAD(clk_orphan_list);
static LIST_HEAD(clk_notifier_list);
static LIST_HEAD(clocks);
其中clock链表我们在上一节的末尾已经说明,这个主要就是为了方便查找。
clk_root_list是存放根时钟的,一个链表,通常根时钟都是固定频率的时钟。(fix)
clk_orphan_list是存放孤儿节点的时钟,即一般而言没有父时钟,也不是根时钟,这种时钟通常就是孤儿时钟。
clk_notifier_list是通知链表,即某个父时钟跟新了频率,其也要通知子时钟更新它的频率计算。
注册时的位置如下
clk_register
__clk_init