fdt_setprop_string(9)
๐
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โnodeoffsetdid not point toFDT_BEGIN_NODEtag. 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
- 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