fdt_getprop(9)
π fdt_getprop(9) β the kernel API manual, but make it make sense π
okay bestie, welcome to fdt_getprop(9), straight out of the Kernel API Manual. this one's actually so useful β it's your little grabby-hands for device tree properties, and i'm gonna walk you through it like we're texting at 2am π«Ά
β¨ NAME β¨
fdt_getprop β retrieve the value of a given property. that's it, that's the whole job. it fetches. it props. slay. π
πΈ SYNOPSIS πΈ
const void * fdt_getprop (const void *fdt , int nodeoffset , const char
*name , int *lenp );
yes the line break in the middle of const char *name is canon, don't come for me, that's how it's printed in the manual π
π ARGUMENTS π
fdtβ pointer to the device tree blob. the whole tree, the big vibe, the source of truth. π³nodeoffsetβ offset of the node whose property to find. you're saying "go to this spot in the blob, that's where the good stuff lives." πnameβ name of the property to find. the label on the drawer you're opening. π·οΈlenpβ pointer to an integer variable (will be overwritten, heads up bestie, it does not care about your feelings) orNULL. π
π¦ DESCRIPTION π¦
so fdt_getprop retrieves a pointer to the value of the property named name of the node at offset nodeoffset. and here's the important bit, the part you cannot miss: this is a pointer to within the device blob itself, not a copy of the value. like, you're getting a window into the blob, not a souvenir. no cap. π₯
and if lenp is non-NULL, the length of the property value is also returned, in the integer pointed to by lenp. so you get the goods and the receipt. iconic. π§Ύ
fr fr though β because it's a pointer into the blob and not a copy, treat it like borrowed stuff. the original doesn't say anything else about lifetime here, so i'm not gonna invent lore for you π
π RETURN π
here's where it gets a little spicy, so read carefully:
- pointer to the property's value. and if
lenpis non-NULL,*lenpcontains the length of the property value (>=0). happy path, everything's cute β¨ NULL, on error. and iflenpis non-NULL,*lenpcontains an error code (<0):-FDT_ERR_NOTFOUNDβ node does not have named property. the drawer is empty. π-FDT_ERR_BADOFFSETβnodeoffsetdid not point toFDT_BEGIN_NODEtag. you knocked on the wrong door bestie πͺ-FDT_ERR_BADMAGIC,-FDT_ERR_BADVERSION,-FDT_ERR_BADSTATE,-FDT_ERR_BADSTRUCTURE,-FDT_ERR_TRUNCATEDβ standard meanings π
π SEE ALSO π
Kernel file ./scripts/dtc/libfdt/libfdt.h
and the whole extended friend group, all of them, in order, no one left out because i would never:
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_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_prop_value(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)
that's the whole page, bestie. go forth and fdt_getprop responsibly π
this one came from ./scripts/dtc/libfdt, dated October 2026. mwah, sign-off complete πβ¨
π¦ 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