fdt_find_max_phandle(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… fdt_find_max_phandle β€” like, the highest phandle in the whole tree

okay so this is a page from the Kernel API Manual, section 9, and it's about one (1) tiny little function that has one (1) tiny little job: go find the biggest phandle in your device tree and hand it back to you. iconic behavior honestly πŸŽ€


✨ NAME ✨

fdt_find_max_phandle β€” bestie, it finds and returns the highest phandle in a tree. that's it. that's the whole gig 🌸


πŸ¦‹ SYNOPSIS πŸ¦‹

int fdt_find_max_phandle (const void *fdt , uint32_t *phandle );

(yes we're keeping the spacing exactly as-is, don't come for me πŸ™ˆ)


πŸ’– ARGUMENTS πŸ’–

  • fdt β€” pointer to the device tree blob. the whole tree. the main character. you hand it over and it goes digging 🌳
  • phandle β€” the return location for the highest phandle value found in the tree. so like, you give it a spot to write into and it fills it in πŸ‘‘

πŸ”₯ DESCRIPTION πŸ”₯

so fdt_find_max_phandle finds the highest phandle value in the given device tree. literally exactly what it says on the tin, no plot twists.

but here's the part you cannot skip, and i'm saying it with my whole chest:

the value returned in phandle is only valid if the function returns success. like, only then. if the call fails, whatever's sitting in there is not your answer, bestie, do not trust it πŸ’€ check the return value first, always, no cap.

⭐ RETURN ⭐

0 on success, or a negative error code on failure. that's the vibe check. 0 = we ate. negative = nope 🫢


🌈 SEE ALSO 🌈

Kernel file ./scripts/dtc/libfdt/libfdt.h, plus literally the entire libfdt friend group (iykyk):

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_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_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 i said. the whole group chat πŸ’œ


this little gem lives in ./scripts/dtc/libfdt, and this edition is dated October 2026. that's the source and the date, bestie β€” we close the page the same way it came in, with a cute little sign-off πŸ§šβœ¨πŸ’…

πŸ“¦ where this page comes from