fdt_setprop_u64(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– fdt_setprop_u64 πŸ’–

okay so bestie, welcome to the fdt_setprop_u64(9) page from the Kernel API Manual ✨ this one's a little cutie with a big job and honestly? she ate.


🌸 NAME 🌸

fdt_setprop_u64 β€” set a property to a 64-bit integer πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

int fdt_setprop_u64 (void *fdt , int nodeoffset , const char *name ,
       uint64_t val );

πŸŽ€ ARGUMENTS πŸŽ€

  • fdt β€” pointer to the device tree blob 🫢 like, the whole tree, that's her
  • nodeoffset β€” offset of the node whose property to change πŸ“ know exactly which node you're messing with, iykyk
  • name β€” name of the property to change 🏷️
  • val β€” 64-bit integer value for the property (native endian) πŸ”’ yes the endianness note matters, don't skip it

✨ DESCRIPTION ✨

so here's the vibe: fdt_setprop_u64 sets the value of the named property in the given node to the given 64-bit integer value β€” and yes, it converts to big-endian if necessary, that's just the housekeeping she does πŸ’…. if that property doesn't already exist? she literally just creates a new one with that value. main character behavior, no cap.

⚠️ real talk though: this function may insert or delete data from the blob, and will therefore change the offsets of some existing nodes. so if you were holding onto a nodeoffset, bestie… be careful 😭 the layout moves under you.

πŸ’€ RETURN πŸ’€

  • 0 β€” on success πŸŽ‰ slay
  • -FDT_ERR_NOSPACE β€” there is insufficient free space in the blob to contain the new property value 🫠 she's full, no room
  • -FDT_ERR_BADOFFSET β€” nodeoffset did not point to FDT_BEGIN_NODE tag 🚩 wrong spot
  • -FDT_ERR_BADLAYOUT
  • -FDT_ERR_BADMAGIC
  • -FDT_ERR_BADVERSION
  • -FDT_ERR_BADSTATE
  • -FDT_ERR_BADSTRUCTURE
  • -FDT_ERR_BADLAYOUT (yes again, she's listed twice in the canon, I don't make the rules πŸ™ˆ)
  • -FDT_ERR_TRUNCATED
  • and all the other standard meanings ⭐

🌈 SEE ALSO 🌈

first up, the source: Kernel file ./scripts/dtc/libfdt/libfdt.h πŸ‘‘

then the girlies from the offset/tag/header/subnode corner:

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)

the memory-reserve + lookup crew:

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)

the matching/compat + inplace + builder squad:

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)

and the rest of the family β€” the setters, appenders, deleters and friends πŸ’œ:

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


that's the whole page bestie, go forth and set your 64-bit props πŸ§šβ€β™€οΈ

sign-off time 🫢 this little love letter lives in ./scripts/dtc/libfdt and it's dated October 2026 β€” catch you in the next fdt_setprop_u64(9) πŸ’–

πŸ“¦ where this page comes from