fdt_stringlist_search(9)
πΈ fdt_stringlist_search β like, find a string in a string list and hand you back its index π
okay bestie, so this is fdt_stringlist_search(9) from the Kernel API Manual, and it's genuinely one of those little functions that just does one thing and does it well. main character energy, no notes β¨
β¨ SYNOPSIS β¨
int fdt_stringlist_search (const void *fdt , int nodeoffset , const char *property , const char *string );
like yes, that's the whole vibe. four args, one int back. slay.
π«Ά ARGUMENTS π«Ά
fdtβ pointer to the device tree blob. the whole tree, the big picture, the moment. π³nodeoffsetβ offset of a tree node. which node we're poking at, basically. πpropertyβ name of the property containing the string list. the one that's holding all the strings, iykyk. πstringβ string to look up in the string list. the one you're hunting for. π
π DESCRIPTION π
okay so here's the tea, and it's lowkey important: it is possible for this function to succeed on property values that are not NUL-terminated. π
why?? because it will stop after finding the first occurrence of string β that's it, that's the whole reason. it doesn't need the rest of the buffer to be tidy.
and when does this actually happen fr? think small-valued cell properties, like #address-cells, when you're searching for the empty string. yeah. that's the kind of situation where you'd see it. π
so like, don't be shocked when it works on a value that isn't NUL-terminated. it's not a bug, it's just how she moves. π
β RETURN β
- the index of the string in the list of strings β the good ending, the win, we love to see it π
-FDT_ERR_BADVALUEβ the property value is not NUL-terminated π-FDT_ERR_NOTFOUNDβ the property does not exist, or it exists but does not contain the given string. ghosted. π¦
π SEE ALSO π
bestie this list is long long, so buckle up, we're going through all of it β every single one, no skipping, periodt. π§
First up, the kernel file: ./scripts/dtc/libfdt/libfdt.h
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_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_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β¦ that's the whole squad. read them, love them, link them. π₯
and that's the page!! mwah π this one lives in the kernel source at ./scripts/dtc/libfdt and the version tag on it is October 2026 β so yeah, mark your calendar bestie, she's dated and she's iconic. ππ¦π
π¦ 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