欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

linux时钟子系统-clk

时间:2023-06-06
前言

分析下 clk_register 的流程。

重要的结构体

分析一个函数的流程之前,必须要搞清楚结构体的定义,才能知道其背后的用途。

clk_hw

struct clk_hw {struct clk *clk;const struct clk_init_data *init;};

其中的 clk结构体,用来表示 clk之前的关系(parent,children),以及当前的频率(clk rate)用,
clk_init_data 结构体,提供了体层的操作函数 fops。

函数分析

struct clk *clk_register(struct device *dev, struct clk_hw *hw){//传入dev的参数可以为NULLint ret;struct clk *clk;//创建一个 clk结构体clk = kzalloc(sizeof(*clk), GFP_KERNEL);if (!clk) {pr_err("%s: could not allocate clkn", __func__);ret = -ENOMEM;goto fail_out;}ret = _clk_register(dev, hw, clk);if (!ret)return clk;kfree(clk);fail_out:return ERR_PTR(ret);}

接下来 是 _clk_register 函数

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。