fdt_next_subnode(9)
π
fdt_next_subnode β like, the kernel API manual page for fdt_next_subnode(9) β¨
okay bestie, welcome to fdt_next_subnode(9) from the Kernel API Manual β this is the little function that tells you where the next direct subnode lives. it's giving tour guide energy for your device tree π
β¨ NAME β¨
fdt_next_subnode β get offset of next direct subnode π¦
πΈ SYNOPSIS πΈ
int fdt_next_subnode (const void *fdt , int offset );
literally that's the whole vibe. no cap, that's it β¨
π ARGUMENTS π
fdtβ the FDT blob. your whole tree, your whole moment, the main character πoffsetβ the offset of the previous subnode. yes bestie, you gotta know where you've been π
π DESCRIPTION π
okay so here's the whole ritual: you call fdt_first_subnode first, right? then you call this function over and over again in a loop to walk the direct subnodes of a parent node. that's the pattern. that's the assignment. periodt π«Ά
πΈ lowkey key detail: it's fdt_first_subnode first, then this one repeatedly β this function does not kick off the walk, it continues it. fr fr β¨
β RETURN β
- the offset of the next subnode β slay, you got one π
-FDT_ERR_NOTFOUNDβ as in, there are no more subnodes π the walk is over, go home, the party's finished π
π¦ SEE ALSO π¦
the friend group is huge, so buckle up bestie, we're doing the whole roll call in order π
fdt_offset_ptr(9),fdt_next_tag(9),fdt_first_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_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)
π§ and yeah, the kernel file to go poke at is ./scripts/dtc/libfdt/libfdt.h β that's where the sauce lives β¨
okay that's the whole page, bestie, you ate that π this one's filed under ./scripts/dtc/libfdt and stamped October 2026 β go forth and iterate those subnodes, icon behavior only ππ
π¦ 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