fdt_property(9)
π fdt_property(9) π
okay so bestie, welcome to the fdt_property(9) page β it's from the Kernel API Manual, lives down in ./scripts/dtc/libfdt, and ngl this is one of those little functions that's so specific about when you're allowed to call it. let's get into it π¦
β¨ NAME β¨
fdt_property β add a property to the current node π
π SYNOPSIS π
int fdt_property (void *fdt , const char *name , const void *val , int
len );
like, copy that exactly, no cap, the argument order literally matters π
πΈ ARGUMENTS πΈ
fdtβ pointer to the device tree blob π«Ά that's your whole tree, the main characternameβ the name of the property you're adding β¨valβ pointer to the property value πlenβ how long that property value is, in bytes β
π DESCRIPTION π
so fdt_property adds a property with the given name and val to the current node β and this happens during sequential write, which is the key vibe check here π₯
the big rule: this function can only be called between fdt_begin_node and fdt_end_node. like, that's it, that's the window. call it anywhere else and you're gonna have a bad time π
π RETURN π
0β on success, slay π β¨-FDT_ERR_NOSPACEβ if there's insufficient space in the blob π your tree said "no room bestie"-FDT_ERR_BADSTATEβ if you're not currently within a node π you tried to add a property outside thefdt_begin_node/fdt_end_nodewindow
π§ SEE ALSO π§
okay this list is iconic and also enormous, so buckle up β also peep the kernel file ./scripts/dtc/libfdt/libfdt.h while you're at it π
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_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_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)
π«Ά reminder bestie:fdt_propertyonly works betweenfdt_begin_nodeandfdt_end_node. that's not me being dramatic, that's literally the manpage. periodt. π
and that's the whole page!! this lil guy ships out of the kernel's ./scripts/dtc/libfdt directory, dated October 2026, and it's filed under fdt_property(9) β ok bye, go build a device tree, you're gonna eat ππβ¨
π¦ 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