详细分析一下linux中的get_device_parent函数
时间: 2023-12-18 17:58:10 浏览: 45
get_device_parent函数是在Linux设备模型中定义的一个函数,其主要作用是获取给定设备的父设备。
函数原型如下:
```
struct device *get_device_parent(struct device *dev)
```
其中,dev表示要获取父设备的设备指针,返回值为指向父设备的指针。
该函数的实现过程如下:
1. 首先判断设备指针是否为NULL,若为NULL则直接返回NULL,表示获取父设备失败。
2. 然后通过dev->parent指向获取设备的父节点,如果这个父节点不为NULL,则返回它的指针即可。
3. 如果dev->parent为NULL,则调用设备模型中的bus_type的get_device函数来获取父设备。具体操作如下:
a. 从设备dev中获取bus_type的指针bus。
b. 从bus中获取父设备的名称字符串parent_name。
c. 调用bus->get_device函数获取父设备的指针parent_dev。
d. 判断parent_dev是否为NULL,如果不为NULL,则将parent_dev设置为dev的父设备,并返回parent_dev的指针。
e. 如果parent_dev为NULL,则返回NULL,表示获取父设备失败。
综上所述,get_device_parent函数主要是通过设备模型中的bus_type来获取父设备的指针,并返回该指针。在Linux设备模型中,设备与设备之间是通过bus_type来关联的,因此该函数在获取父设备时主要是通过bus_type的get_device函数来完成的。