device_property_read_u32_array和of_property_read_u32_array区别
时间: 2023-08-03 09:03:13 浏览: 320
`device_property_read_u32_array` 和 `of_property_read_u32_array` 都是用来读取设备树中属性值的函数,但是它们的使用场景不同。
`of_property_read_u32_array` 函数是 Linux 内核中用于读取 Open Firmware 格式设备树节点属性值的函数。而 `device_property_read_u32_array` 函数则是 Linux 内核中用于读取平台设备属性值的函数。
具体而言,`of_property_read_u32_array` 函数的参数是一个指向设备树节点的指针和一个用于存储属性值的数组指针。而 `device_property_read_u32_array` 函数的参数是一个指向平台设备的指针、属性名、一个用于存储属性值的数组指针和数组元素个数。
因此,如果你要读取 Open Firmware 格式的设备树节点属性值,就应该使用 `of_property_read_u32_array` 函数;如果你要读取平台设备的属性值,就应该使用 `device_property_read_u32_array` 函数。
相关问题
device_property_read_u32_array;用法
`device_property_read_u32_array` 是一个用于从设备树中读取无符号 32 位整数数组的函数。它的函数原型如下:
```
int device_property_read_u32_array(struct device *dev, const char *propname, u32 *values, size_t nvalues);
```
各参数含义如下:
- `dev`:指向 `struct device` 结构体的指针,表示设备节点;
- `propname`:要读取的属性的名称,类型为 `const char *`;
- `values`:指向存储读取结果的缓冲区的指针,类型为 `u32 *`;
- `nvalues`:缓冲区中可以存储的 `u32` 类型数值的个数,类型为 `size_t`。
函数的返回值为读取到的 `u32` 类型数值的个数,如果读取失败,则返回一个负数错误码。
举个例子,假设我们要从设备树中读取一个名为 "my-property" 的属性,并将其存储在一个 `u32` 类型的数组中,可以使用以下代码:
```
u32 my_property_values[3];
int ret = device_property_read_u32_array(dev, "my-property", my_property_values, 3);
if (ret < 0) {
// 读取失败,处理错误
} else {
// 读取成功
}
```
在这个例子中,我们假设 `dev` 是一个指向设备节点的指针,要读取的属性名为 "my-property",缓冲区中可以存储 3 个 `u32` 类型数值。读取成功后,返回值 `ret` 表示实际读取到的数值个数,读取到的数值存储在 `my_property_values` 数组中。
of_property_read_u32_array原型
of_property_read_u32_array函数是Linux设备驱动中的一个函数,其原型定义如下:
```
int of_property_read_u32_array(const struct device_node *np, const char *propname, u32 *out_values, size_t sz);
```
该函数的作用是从设备树中读取一个u32类型的数组属性,并将读取到的属性值存储到给定的缓冲区中。
参数解释:
- np:设备节点指针,表示要读取属性的节点。
- propname:属性名称字符串。
- out_values:存储属性值的缓冲区指针。
- sz:缓冲区大小,以字节为单位。
返回值:
- 成功:返回读取到的属性数组的元素数量。
- 失败:返回一个错误码(负数)。
阅读全文