of_node_put是什么意思
时间: 2023-12-01 21:03:31 浏览: 70
of_node_put是Linux内核中的一个函数,用于减少设备树节点(device tree node)的引用计数。设备树是一种硬件描述语言,用于描述硬件设备的信息,内核在启动时会解析设备树并根据其中的信息初始化硬件设备。当设备树节点不再被使用时,需要调用of_node_put函数来释放对该节点的引用,以便内核可以在不需要该节点时将其从内存中删除。
相关问题
of_node_put函数有什么用
of_node_put函数用于减少一个设备树节点的引用计数。当一个设备树节点不再需要时,可以使用of_node_put函数来释放其内存,以避免内存泄漏。具体来说,当一个设备树节点被引用时,它的引用计数会增加,而每次调用of_node_put函数会将其引用计数减少1。当引用计数为0时,该节点的内存会被释放。
基于高通DRM图形显示框架of_graph_get_remote_node(np, 1, 0);
在高通的 DRM 图形显示框架中,`of_graph_get_remote_node(np, 1, 0)` 函数用于查找与当前设备连接的第一个远程节点。其中,`np` 参数是指向当前设备节点的指针,`1` 表示端口号为 1,`0` 表示远程节点的 phandle 为 0。在高通的 DRM 中,通常使用 `of_graph_parse_endpoint` 函数来解析设备树中的连接信息,然后调用 `of_graph_get_remote_node` 函数查找远程节点。
例如,以下代码片段是高通 DRM 中的一个示例,用于查找与当前设备连接的 fbdev 节点:
```
struct device_node *ep;
struct device_node *remote;
ep = of_graph_parse_endpoint(dev->of_node, "output");
if (!ep) {
return ERR_PTR(-EINVAL);
}
remote = of_graph_get_remote_node(ep, 1, 0);
if (!remote) {
return ERR_PTR(-ENODEV);
}
if (!of_device_is_available(remote)) {
return ERR_PTR(-ENODEV);
}
of_node_put(ep);
```
在这个示例中,`of_graph_parse_endpoint` 函数解析当前设备节点的连接信息,`of_graph_get_remote_node` 函数查找与当前设备连接的远程节点,然后通过 `of_device_is_available` 函数检查远程节点是否可用。如果远程节点不可用,函数返回 `-ENODEV` 错误码,否则返回远程节点的指针。