fdt_del_node(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 fdt_del_node β€” from the Kernel API Manual (section 9, bb πŸ’–)

okay so this is fdt_del_node(9), straight out of the Kernel API Manual, and it's literally the "yeet that node" function. if you've ever wanted to delete a subtree from a device tree blob and feel powerful doing it, this is your moment. periodt.


✨ NAME ✨

fdt_del_node β€” delete a node (subtree). that's it. that's the whole job. it removes stuff. iconic behavior honestly πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

int fdt_del_node (void *fdt , int nodeoffset );

that's the whole signature bestie, two args, one int coming back at you 🫢


πŸ¦‹ ARGUMENTS πŸ¦‹

  • fdt β€” pointer to the device tree blob. like, the blob itself. the whole vibe.
  • nodeoffset β€” offset of the node to nop. yes the manpage says "nop", we're keeping it, it's giving legacy terminology and we respect it 😭

πŸ’œ DESCRIPTION πŸ’œ

fdt_del_node will remove the given node, including all its subnodes if any, from the blob.

read that again ngl β€” all its subnodes. if any. it takes the whole family tree with it. main character energy, no survivors πŸ’€

⚠️ okay so this is the important part and I need you to actually hear me: this function will delete data from the blob, and will therefore change the offsets of some existing nodes. so any offset you were holding onto from before this call? it might be pointing at completely different vibes now. do a little vibe check on your offsets after this. lowkey crucial 🫠

⭐ RETURN ⭐

0, on success πŸŽ‰ (slay)

and then the error squad, all of them:

  • -FDT_ERR_BADOFFSET β€” nodeoffset did not point to FDT_BEGIN_NODE tag. so you gave it a coordinate that isn't a node start. rude of you honestly πŸ™ˆ
  • -FDT_ERR_BADLAYOUT
  • -FDT_ERR_BADMAGIC
  • -FDT_ERR_BADVERSION
  • -FDT_ERR_BADSTATE
  • -FDT_ERR_BADSTRUCTURE
  • -FDT_ERR_TRUNCATED

those last ones are just standard meanings, iykyk πŸ”₯


🌈 SEE ALSO 🌈

okay the see-also section on this page is huge and I'm not skipping a single one of these, so buckle up bestie, we're going on a journey 🧚

Kernel file ./scripts/dtc/libfdt/libfdt.h, and then, in order:

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_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_overlay_apply(9), fdt_overlay_target_offset(9), fdt_strerror(9).

that's all of them, every single one, I counted, we ate that list uppp πŸ“


anyway that's the whole page πŸ’– this one lives at ./scripts/dtc/libfdt, dated October 2026, so go forth and delete nodes responsibly. mwah πŸ«ΆπŸ’…βœ¨

πŸ“¦ where this page comes from