fdt_node_of...y_prop_value(9)
π fdt_node_of...y_prop_value(9) π
okay bestie, you're looking at the Kernel API Manual page for the function with the absolute mouthful name fdt_node_offset_by_prop_value(9). The header up top is the abbreviated fdt_node_of...y_prop_value(9) vibe, and we're about to make it make sense. π«Ά
β¨ NAME β¨
fdt_node_offset_by_prop_value β find nodes with a given property value π
π SYNOPSIS π
int fdt_node_offset_by_prop_value (const void *fdt , int startoffset ,
const char *propname , const void *propval , int proplen );
That's the signature, no cap.
π ARGUMENTS π
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 inpropval.
π¦ DESCRIPTION π¦
So here's the tea, bestie: 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. π
If startoffset is -1, it returns the very first such node in the tree instead. Periodt.
To iterate through all nodes matching the criterion, the manual says to use this iconic idiom:
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); }
Not me warning you: 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. π¨
π₯ RETURN π₯
Return-value check, bestie:
- structure block offset of the located node (
>= 0,>startoffset), on success β -FDT_ERR_NOTFOUND, no node matching the criterion exists in the tree afterstartoffset-FDT_ERR_BADOFFSET,nodeoffsetdoes not refer to aBEGIN_NODEtag-FDT_ERR_BADMAGIC,-FDT_ERR_BADVERSION,-FDT_ERR_BADSTATE,-FDT_ERR_BADSTRUCTURE, standard meanings
π SEE ALSO π
The manual points you at Kernel file ./scripts/dtc/libfdt/libfdt.h and this whole friend group of pages β all of them, no skips:
Kernel file ./scripts/dtc/libfdt/libfdt.h fdt_offset_ptr(9),
fdt_next_tag(9), fdt_first_subnode(9), fdt_next_subnode(9),
fdt_for_each_subnode(9), fdt_header_size(9), fdt_header_size_(9),
fdt_check_header(9), fdt_move(9), fdt_check_full(9), fdt_get_string(9),
fdt_string(9), fdt_find_max_phandle(9), fdt_get_max_phandle(9),
fdt_generate_phandle(9), fdt_num_mem_rsv(9), fdt_get_mem_rsv(9),
fdt_subnode_offset_namelen(9), fdt_subnode_offset(9),
fdt_path_offset_namelen(9), fdt_path_offset(9), fdt_get_name(9),
fdt_first_property_offset(9), fdt_next_property_offset(9),
fdt_for_each_property_offset(9), fdt_get_property_by_offset(9),
fdt_get_property_namelen(9), fdt_get_property(9),
fdt_getprop_by_offset(9), fdt_getprop_namelen(9), fdt_getprop(9),
fdt_get_phandle(9), fdt_get_alias_namelen(9), fdt_get_alias(9),
fdt_get_symbol_namelen(9), fdt_get_symbol(9), fdt_get_path(9),
fdt_supernode_atdepth_offset(9), fdt_node_depth(9),
fdt_parent_offset(9), fdt_node_offset_by_phandle(9),
fdt_node_check_compatible(9), fdt_node_offset_by_compatible(9),
fdt_stringlist_contains(9), fdt_stringlist_count(9),
fdt_stringlist_search(9), fdt_stringlist_get(9), FDT_MAX_NCELLS(9),
fdt_address_cells(9), fdt_size_cells(9),
fdt_setprop_inplace_namelen_partial(9), fdt_setprop_inplace(9),
fdt_setprop_inplace_u32(9), fdt_setprop_inplace_u64(9),
fdt_setprop_inplace_cell(9), fdt_nop_property(9), fdt_nop_node(9),
fdt_create_with_flags(9), fdt_create(9), fdt_resize(9),
fdt_add_reservemap_entry(9), fdt_finish_reservemap(9),
fdt_begin_node(9), fdt_property(9), fdt_property_placeholder(9),
fdt_end_node(9), fdt_finish(9), fdt_create_empty_tree(9),
fdt_open_into(9), fdt_pack(9), fdt_add_mem_rsv(9), fdt_del_mem_rsv(9),
fdt_set_name(9), fdt_setprop_namelen(9), fdt_setprop(9),
fdt_setprop_placeholder_namelen(9), fdt_setprop_placeholder(9),
fdt_setprop_u32(9), fdt_setprop_u64(9), fdt_setprop_cell(9),
fdt_setprop_string(9), fdt_setprop_namelen_string(9),
fdt_setprop_empty(9), fdt_appendprop(9), fdt_appendprop_u32(9),
fdt_appendprop_u64(9), fdt_appendprop_cell(9), fdt_appendprop_string(9),
fdt_appendprop_addrrange(9), fdt_delprop(9), fdt_add_subnode_namelen(9),
fdt_add_subnode(9), fdt_del_node(9), fdt_overlay_apply(9),
fdt_overlay_target_offset(9), fdt_strerror(9)
k bye bestie π«Ά this page's source/version is ./scripts/dtc/libfdt, it's dated October 2026, and it's the fdt_node_of...y_prop_value(9) page. slay and read your kernel docs responsibly π
β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms