fdt_end_node(9)
Hiiii bestie! πΈ Welcome to the <pink>Kernel API Manual</pink> entry for fdt_end_node β the <purple>fdt_end_node(9)</purple> page, to be exact. And ngl? This one's short but it's crucial if you're out here building device tree blobs sequentially. Let's get into it. π
β¨ NAME β¨
fdt_end_node β complete the current node π
πΈ SYNOPSIS πΈ
int fdt_end_node (void *fdt );
π¦ ARGUMENTS π¦
fdtβ pointer to the device tree blob π³. That's literally it. Just the blob you're working on.
π DESCRIPTION π
Okay so picture this: you're doing a sequential write of a device tree blob, right? fdt_end_node is the function that completes the current node. β¨
Here's the vibe check: you must call this function to close each node you started with fdt_begin_node. No cap. Every single node needs its ending moment. π«Ά
And after you call this? Bestie, listen. No more properties or subnodes can be added to the node. It's giving "the end, periodt." π So make sure you've added everything you wanted before you hit this function.
π₯ RETURN π₯
0β on success π slay!-FDT_ERR_BADSTATEβ if you're not currently within a node π. Basically the function is like "bestie, there's no node to end?" β check your state, iykyk.
π SEE ALSO π
Kernel file ./scripts/dtc/libfdt/libfdt.h β and honestly, there are so many friends in this family. Here's the full squad, no gatekeeping: 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_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_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).
Brought to you by ./scripts/dtc/libfdt, October 2026 edition β this is fdt_end_node(9) signing off! πβ¨ππ¦πΈπ
π¦ 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