在linux内核的clk初始化中,表的clk符号是什么

在linux内核的clk初始化中,表的clk符号是什么,linux,linux-kernel,kernel,clock,Linux,Linux Kernel,Kernel,Clock,我正在学习linux内核3.10,它的函数为_clk_init,如下所示 void __init of_clk_init(const struct of_device_id *matches) { struct device_node *np; if (!matches) matches = __clk_of_table; for_each_matching_node(np, matches) { const struct of_dev

我正在学习linux内核3.10,它的函数
为_clk_init
,如下所示

void __init of_clk_init(const struct of_device_id *matches)
{
    struct device_node *np;

    if (!matches)
        matches = __clk_of_table;

    for_each_matching_node(np, matches) {
        const struct of_device_id *match = of_match_node(matches, np);
        of_clk_init_cb_t clk_init_cb = match->data;
        clk_init_cb(np);
    }
}

当我查找表的符号时,我没有找到任何参考,但我非常确定表的符号与linux设备树模型有关,是吗

是,
\u表的
反映了blob中的特殊部分,该部分为时钟提供了设备id的结构

在include/linux/clk provider.h中定义

extern struct of_device_id __clk_of_table;

#define CLK_OF_DECLARE(name, compat, fn) OF_DECLARE_1(clk, name, compat, fn)

请参阅
include/asm generic/vmlinux.lds.h
。这是我找到的
#定义CLK_OF_TABLES()对齐(8);VMLINUX_符号(_表的_uclk_)=。;*(u clk_of_table)*(u clk_of_table_end)
当我看到我的代码时,使用上述宏声明了各种类型的时钟(固定、选通、MUX..),这些宏使它们出现在位置
u clk_of_table
上,并且使用设备树中的可用时钟验证相同类型的时钟(
所有节点的
)使用
fn
进一步调用,其中
np
为参数。。。我说的对吗。。。这是一个有效的通用时钟树实现。。。如果我错了,请纠正我?我没有深入调查,尽管你可能是对的。我不明白你在通用实现下的意思。