fdt_setprop_string(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… fdt_setprop_string(9) โ€” the fdt_setprop_string page, bestie edition โœจ

okay so this one is from the Kernel API Manual, and it's literally the glow-up page for fdt_setprop_string โ€” the function that gives a property a string value. it's giving "makeover montage but for device tree blobs" ๐ŸŽ€ let's get into it.


๐ŸŒธ NAME ๐ŸŒธ

fdt_setprop_string โ€” set a property to a string value. that's it, that's the whole vibe. short, sweet, iconic ๐Ÿ’–


โœจ SYNOPSIS โœจ

fdt_setprop_string (fdt , nodeoffset , name , str );

(no cap, that's the exact signature, spaces and all โ€” don't come for me, i copied it faithfully ๐Ÿซถ)


๐Ÿ’… ARGUMENTS ๐Ÿ’…

  • fdt โ€” a pointer to the device tree blob. yes, THE blob. the whole tree. it's the main character of this function ngl ๐Ÿ‘‘
  • nodeoffset โ€” the offset of the node whose property you want to change. so like, which node are we touching, bestie ๐ŸŒˆ
  • name โ€” the name of the property you're changing. the label on the little drawer you're swapping stuff into ๐ŸŽ€
  • str โ€” the string value you're putting in there. the actual content, the moment, the slay โญ

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so what does fdt_setprop_string actually do? it sets the value of the named property in the given node to the given string value โ€” and it uses the length of the string to figure out the new length of the property. like it just measures your string and goes "okay, that's the size now," periodt ๐Ÿ’…

if the property does not already exist? no worries, it literally creates a new property with that value. it's giving "make it work, make it fashion" โœจ

โš ๏ธ but here's the tea, and it's important tea: this function may insert or delete data from the blob, and it will therefore change the offsets of some existing nodes. so don't be out here holding onto an old node offset like it's still valid โ€” because it might not be ๐Ÿ˜ญ

๐Ÿ’€ RETURN ๐Ÿ’€

  • 0 โ€” on success. we love a zero. we stan a zero. ๐Ÿฅณ
  • -FDT_ERR_NOSPACE โ€” there is insufficient free space in the blob to contain the new property value. the blob is full, bestie, there's no room for your string ๐Ÿ™ˆ
  • -FDT_ERR_BADOFFSET โ€” nodeoffset did not point to FDT_BEGIN_NODE tag. wrong address, wrong vibe, blocked ๐Ÿ’€
  • -FDT_ERR_BADLAYOUT โ€” standard meaning. ๐Ÿงš
  • -FDT_ERR_BADMAGIC โ€” standard meaning. ๐Ÿ”ฎ
  • -FDT_ERR_BADVERSION โ€” standard meaning. ๐Ÿ“
  • -FDT_ERR_BADSTATE โ€” standard meaning. ๐ŸŒธ
  • -FDT_ERR_BADSTRUCTURE โ€” standard meaning. ๐Ÿฆ‹
  • -FDT_ERR_BADLAYOUT โ€” standard meaning, yes it's listed again, yes i'm listing it again, we keep every detail in this house ๐Ÿ’–
  • -FDT_ERR_TRUNCATED โ€” standard meaning. โœ‚๏ธ

(and yeah, the "standard meanings" bit is doing a lot of heavy lifting there โ€” but that's what the original says, so that's what you get, iykyk)


๐Ÿ‘‘ SEE ALSO ๐Ÿ‘‘

okay this list is long, like genuinely massive, so buckle up bestie. the kernel file is ./scripts/dtc/libfdt/libfdt.h, and here's every single cross-reference, 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_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)

like i said. every. single. one. ๐ŸŒˆ


mwah ๐Ÿ’‹ that's the page! brought to you by the fine folks at ./scripts/dtc/libfdt, dated October 2026 โ€” go forth and set your strings, bestie, and remember: the offsets may have moved, so re-check them fr fr ๐Ÿซถโœจ

๐Ÿ“ฆ where this page comes from