fdt_appendprop_addrrange(9)
β¨ 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 auint64_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-cellsproperty. it's giving messy, and not in a cute way π-FDT_ERR_BADOFFSETβnodeoffsetdid not point toFDT_BEGIN_NODEtag-FDT_ERR_BADSTATE-FDT_ERR_BADSTRUCTURE-FDT_ERR_BADVERSION-FDT_ERR_BADVALUEβaddrorsizedoesn'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
- 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