fdt_stringlist_search(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 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