fdt_appendprop_addrrange(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ fdt_appendprop_addrrange β€” a Kernel API Manual moment ✨

okay bestie, welcome to the Kernel API Manual πŸ’– this one's a libfdt function and honestly it's giving "quietly essential" energy, iykyk. no cap, if you're building device trees you'll want this in your group chat.


πŸŽ€ NAME πŸŽ€

fdt_appendprop_addrrange β€” append an address range property πŸ¦‹


🌸 SYNOPSIS 🌸

int fdt_appendprop_addrrange (void *fdt , int parent , int nodeoffset ,
const char *name , uint64_t addr , uint64_t size );

like, that's the whole signature. look at her. iconic. πŸ’…


⭐ ARGUMENTS ⭐

  • fdt β€” pointer to the device tree blob. the blob himself. the main character. πŸ‘‘
  • parent β€” offset of the parent node. not the node, the parent, don't mix them up bestie 😭
  • nodeoffset β€” offset of the node to add a property at 🎯
  • name β€” name of the property. yes queen, you pick it 🏷️
  • addr β€” start address of a given range πŸ“
  • size β€” size of that given range. it's a uint64_t, so dream big 🫢

🌈 DESCRIPTION 🌈

so here's the vibe: fdt_appendprop_addrrange appends an address range value β€” that's the start address and the size, together, holding hands 🫢 β€” to the value of the named property in the given node.

and if that property doesn't already exist? no stress, it just creates a new property with that value. lowkey generous of her. ✨

the cell sizes are determined by the parent's #address-cells and #size-cells. so like, the parent decides how chunky each number is, basically. 🧚

⚠️ heads up bestie: this function may insert data into the blob, and will therefore change the offsets of some existing nodes. so any offsets you were holding onto? yeah they might've moved. literally the "not me changing the whole layout" moment πŸ’€

πŸ’œ RETURN πŸ’œ

  • 0 β€” on success, slay πŸŽ‰
  • -FDT_ERR_BADLAYOUT
  • -FDT_ERR_BADMAGIC
  • -FDT_ERR_BADNCELLS β€” if the node has a badly formatted or invalid #address-cells property. it's giving messy, and not in a cute way πŸ™ˆ
  • -FDT_ERR_BADOFFSET β€” nodeoffset did not point to FDT_BEGIN_NODE tag
  • -FDT_ERR_BADSTATE
  • -FDT_ERR_BADSTRUCTURE
  • -FDT_ERR_BADVERSION
  • -FDT_ERR_BADVALUE β€” addr or size doesn't fit to the respective cells size. too big for the container, we've all been there 😭
  • -FDT_ERR_NOSPACE β€” there is insufficient free space in the blob to contain a new property. the blob said "no room at the inn" πŸ’€
  • -FDT_ERR_TRUNCATED β€” standard meanings, okurrr βœ‚οΈ

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./scripts/dtc/libfdt/libfdt.h β€” and like, the whole libfdt extended universe:

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_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)


🫢 oh and before you go β€” this lil page lives in ./scripts/dtc/libfdt, and it's dated October 2026. bookmark the source folder, screenshot the date, whatever you gotta do. bye bestie, go append some address ranges πŸ’–βœ¨πŸŽ€
πŸ“¦ where this page comes from