ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2014年6月20日 星期五

of_property_read_string

Linux 3.0 後新增的 DTB, 其中,string 的 property 用 of_property_read_string

在 /driver/of/base.c:
/**
 * of_property_read_string - Find and read a string from a property
 * @np:  device node from which the property value is to be read.
 * @propname: name of the property to be searched.
 * @out_string: pointer to null terminated return string, modified only if
 *  return value is 0.
 *
 * Search for a property in a device tree node and retrieve a null
 * terminated string value (pointer to data, not a copy). Returns 0 on
 * success, -EINVAL if the property does not exist, -ENODATA if property
 * does not have a value, and -EILSEQ if the string is not null-terminated
 * within the length of the property data.
 *
 * The out_string pointer is modified only if a valid string can be decoded.
 */
int of_property_read_string(struct device_node *np, const char *propname,
    const char **out_string)
{
   struct property *prop = of_find_property(np, propname, NULL);
   if (!prop)
      return -EINVAL;
   if (!prop->value)
      return -ENODATA;
   if (strnlen(prop->value, prop->length) >= prop->length)
      return -EILSEQ;
   *out_string = prop->value;
   return 0;
}
這個 function 只是把 DTB 中該 string 的位置 return 出來。
所以傳入的 pointer 不必預先 allocate 空間,
同樣的,return 回來後,也不能修改內容。

沒有留言:

標籤

網誌存檔