fdt: Add a function to count strings

Given a device tree node and a property name, the fdt_count_strings()
function counts the number of strings found in the property value.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
master
Thierry Reding 10 years ago committed by Simon Glass
parent a84c8107d9
commit bc4147ab2d
  1. 9
      include/libfdt.h
  2. 20
      lib/libfdt/fdt_ro.c

@ -857,6 +857,15 @@ int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
*/
int fdt_stringlist_contains(const char *strlist, int listlen, const char *str);
/**
* fdt_count_strings - count the number of strings in a string list
* @fdt: pointer to the device tree blob
* @node: offset of the node
* @property: name of the property containing the string list
* @return: the number of strings in the given property
*/
int fdt_count_strings(const void *fdt, int node, const char *property);
/**********************************************************************/
/* Read-only functions (addressing related) */
/**********************************************************************/

@ -491,6 +491,26 @@ int fdt_stringlist_contains(const char *strlist, int listlen, const char *str)
return 0;
}
int fdt_count_strings(const void *fdt, int node, const char *property)
{
int length, i, count = 0;
const char *list;
list = fdt_getprop(fdt, node, property, &length);
if (!list)
return -length;
for (i = 0; i < length; i++) {
int len = strlen(list);
list += len + 1;
i += len;
count++;
}
return count;
}
int fdt_node_check_compatible(const void *fdt, int nodeoffset,
const char *compatible)
{

Loading…
Cancel
Save