⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libfdt.h

📁 uboot详细解读可用启动引导LINUX2.6内核
💻 H
📖 第 1 页 / 共 3 页
字号:
 *		if lenp is non-NULL, *lenp contains the length of the property *		value (>=0) *	NULL, on error *		if lenp is non-NULL, *lenp contains an error code (<0): *		-FDT_ERR_NOTFOUND, node does not have named property *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag *		-FDT_ERR_BADMAGIC, *		-FDT_ERR_BADVERSION, *		-FDT_ERR_BADSTATE, *		-FDT_ERR_BADSTRUCTURE, *		-FDT_ERR_TRUNCATED, standard meanings */const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,					    const char *name, int *lenp);static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,						      const char *name,						      int *lenp){	return (struct fdt_property *)fdt_get_property(fdt, nodeoffset,						       name, lenp);}/** * fdt_getprop - retrieve the value of a given property * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose property to find * @name: name of the property to find * @lenp: pointer to an integer variable (will be overwritten) or NULL * * fdt_getprop() retrieves a pointer to the value of the property * named 'name' of the node at offset nodeoffset (this will be a * pointer to within the device blob itself, not a copy of the value). * If lenp is non-NULL, the length of the property value also * returned, in the integer pointed to by lenp. * * returns: *	pointer to the property's value *		if lenp is non-NULL, *lenp contains the length of the property *		value (>=0) *	NULL, on error *		if lenp is non-NULL, *lenp contains an error code (<0): *		-FDT_ERR_NOTFOUND, node does not have named property *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag *		-FDT_ERR_BADMAGIC, *		-FDT_ERR_BADVERSION, *		-FDT_ERR_BADSTATE, *		-FDT_ERR_BADSTRUCTURE, *		-FDT_ERR_TRUNCATED, standard meanings */const void *fdt_getprop(const void *fdt, int nodeoffset,			const char *name, int *lenp);static inline void *fdt_getprop_w(void *fdt, int nodeoffset,				  const char *name, int *lenp){	return (void *)fdt_getprop(fdt, nodeoffset, name, lenp);}/** * fdt_get_phandle - retreive the phandle of a given node * @fdt: pointer to the device tree blob * @nodeoffset: structure block offset of the node * * fdt_get_phandle() retrieves the phandle of the device tree node at * structure block offset nodeoffset. * * returns: *	the phandle of the node at nodeoffset, on succes (!= 0, != -1) *	0, if the node has no phandle, or another error occurs */uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);/** * fdt_get_path - determine the full path of a node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose path to find * @buf: character buffer to contain the returned path (will be overwritten) * @buflen: size of the character buffer at buf * * fdt_get_path() computes the full path of the node at offset * nodeoffset, and records that path in the buffer at buf. * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset. * * returns: *	0, on success *		buf contains the absolute path of the node at *		nodeoffset, as a NUL-terminated string. *	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) *		characters and will not fit in the given buffer. *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);/** * fdt_supernode_atdepth_offset - find a specific ancestor of a node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose parent to find * @supernodedepth: depth of the ancestor to find * @nodedepth: pointer to an integer variable (will be overwritten) or NULL * * fdt_supernode_atdepth_offset() finds an ancestor of the given node * at a specific depth from the root (where the root itself has depth * 0, its immediate subnodes depth 1 and so forth).  So *	fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); * will always return 0, the offset of the root node.  If the node at * nodeoffset has depth D, then: *	fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); * will return nodeoffset itself. * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset. * * returns: *	structure block offset of the node at node offset's ancestor *		of depth supernodedepth (>=0), on success *	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag*	-FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,				 int supernodedepth, int *nodedepth);/** * fdt_node_depth - find the depth of a given node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose parent to find * * fdt_node_depth() finds the depth of a given node.  The root node * has depth 0, its immediate subnodes depth 1 and so forth. * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset. * * returns: *	depth of the node at nodeoffset (>=0), on success *	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_depth(const void *fdt, int nodeoffset);/** * fdt_parent_offset - find the parent of a given node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose parent to find * * fdt_parent_offset() locates the parent node of a given node (that * is, it finds the offset of the node which contains the node at * nodeoffset as a subnode). * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset, *twice*. * * returns: *	stucture block offset of the parent of the node at nodeoffset *		(>=0), on success *	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_parent_offset(const void *fdt, int nodeoffset);/** * fdt_node_offset_by_prop_value - find nodes with a given property value * @fdt: pointer to the device tree blob * @startoffset: only find nodes after this offset * @propname: property name to check * @propval: property value to search for * @proplen: length of the value in propval * * fdt_node_offset_by_prop_value() returns the offset of the first * node after startoffset, which has a property named propname whose * value is of length proplen and has value equal to propval; or if * startoffset is -1, the very first such node in the tree. * * To iterate through all nodes matching the criterion, the following * idiom can be used: *	offset = fdt_node_offset_by_prop_value(fdt, -1, propname, *					       propval, proplen); *	while (offset != -FDT_ERR_NOTFOUND) { *		... other code here ... *		offset = fdt_node_offset_by_prop_value(fdt, offset, propname, *						       propval, proplen); *	} * * Note the -1 in the first call to the function, if 0 is used here * instead, the function will never locate the root node, even if it * matches the criterion. * * returns: *	structure block offset of the located node (>= 0, >startoffset), *		 on success *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the *		tree after startoffset *	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,				  const char *propname,				  const void *propval, int proplen);/** * fdt_node_offset_by_phandle - find the node with a given phandle * @fdt: pointer to the device tree blob * @phandle: phandle value * * fdt_node_offset_by_prop_value() returns the offset of the node * which has the given phandle value.  If there is more than one node * in the tree with the given phandle (an invalid tree), results are * undefined. * * returns: *	structure block offset of the located node (>= 0), on success *	-FDT_ERR_NOTFOUND, no node with that phandle exists *	-FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);/** * fdt_node_check_compatible: check a node's compatible property * @fdt: pointer to the device tree blob * @nodeoffset: offset of a tree node * @compatible: string to match against * * * fdt_node_check_compatible() returns 0 if the given node contains a * 'compatible' property with the given string as one of its elements, * it returns non-zero otherwise, or on error. * * returns: *	0, if the node has a 'compatible' property listing the given string *	1, if the node has a 'compatible' property, but it does not list *		the given string *	-FDT_ERR_NOTFOUND, if the given node has no 'compatible' property *	-FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_check_compatible(const void *fdt, int nodeoffset,			      const char *compatible);/** * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value * @fdt: pointer to the device tree blob * @startoffset: only find nodes after this offset * @compatible: 'compatible' string to match against * * fdt_node_offset_by_compatible() returns the offset of the first * node after startoffset, which has a 'compatible' property which * lists the given compatible string; or if startoffset is -1, the * very first such node in the tree. * * To iterate through all nodes matching the criterion, the following * idiom can be used: *	offset = fdt_node_offset_by_compatible(fdt, -1, compatible); *	while (offset != -FDT_ERR_NOTFOUND) { *		... other code here ... *		offset = fdt_node_offset_by_compatible(fdt, offset, compatible); *	} * * Note the -1 in the first call to the function, if 0 is used here * instead, the function will never locate the root node, even if it * matches the criterion. * * returns: *	structure block offset of the located node (>= 0, >startoffset), *		 on success *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the *		tree after startoffset *	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_offset_by_compatible(const void *fdt, int startoffset,				  const char *compatible);/**********************************************************************//* Write-in-place functions                                           *//**********************************************************************//** * fdt_setprop_inplace - change a property's value, but not its size * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose property to change * @name: name of the property to change * @val: pointer to data to replace the property value with * @len: length of the property value * * fdt_setprop_inplace() replaces the value of a given property with * the data in val, of length len.  This function cannot change the * size of a property, and so will only work if len is equal to the * current length of the property. * * This function will alter only the bytes in the blob which contain * the given property value, and will not alter or move any other part * of the tree. * * returns: *	0, on success *	-FDT_ERR_NOSPACE, if len is not equal to the property's current length *	-FDT_ERR_NOTFOUND, node does not have the named property *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, *	-FDT_ERR_TRUNCATED, standard meanings */int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,			const void *val, int len);/** * fdt_setprop_inplace_cell - change the value of a single-cell property * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose property to change * @name: name of the property to change * @val: cell (32-bit integer) value to replace the property with * * fdt_setprop_inplace_cell() replaces the value of a given property * with the 32-bit integer cell value in val, converting val to * big-endian if necessary.  This function cannot change the size of a * property, and so will only work if the property already exists and * has length 4. * * This function will alter only the bytes in the blob which contain * the given property value, and will not alter or move any other part * of the tree. * * returns: *	0, on success *	-FDT_ERR_NOSPACE, if the property's length is not equal to 4  *	-FDT_ERR_NOTFOUND, node does not have the named property *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -