of_find_node_by_type(9)
π of_find_node_by_type β the Kernel API Manual, bestie edition π
Okay so picture this: you're deep in the device tree (yes, that device tree, the of_ one, we're in the kernel API manual of_find_node_by_type(9) territory) and you need to find a node by its "device_type" property. That's literally the whole gig. Let's get into it π«Ά
β¨ SYNOPSIS β¨
struct device_node * of_find_node_by_type (struct device_node *from ,
const char *type );
Slay. Two args, one pointer back. Moving on π
π ARGUMENTS π
fromβ the node where your search begins πΎ. PassNULLand it searches the entire device tree, main character energy. Heads up tho: the node you pass in does not get searched β only the next one does, no cap. So typically you just feed back whatever the last call returned, like a lil relay race πββοΈ. Andof_node_putwill be called onfromfor you β the function handles that cleanup itself, so don't stress β¨typeβ the type string you're matching against. That's it, that's the vibe check πΈ
π RETURN π
You get back a node pointer with its refcount incremented π₯ β which means it is so your responsibility now. Call of_node_put on it when you're done, periodt. Don't leave that refcount hanging, bestie, that's giving leak π
π¦ SEE ALSO π¦
The kernel file behind all this magic lives at ./drivers/of/base.c, and here's the whole friend group π:
of_find_all_nodes(9)__of_device_is_compatible(9)of_machine_compatible_match(9)of_machine_read_compatible(9)of_machine_read_model(9)of_machine_get_match(9)of_machine_get_match_data(9)__of_device_is_available(9)__of_device_is_reserved(9)of_device_is_available(9)__of_device_is_fail(9)of_device_is_big_endian(9)of_get_parent(9)of_get_next_parent(9)of_get_next_child(9)of_get_next_child_with_prefix(9)of_get_next_available_child(9)of_get_next_reserved_child(9)of_get_next_cpu_node(9)of_get_compatible_child(9)of_get_child_by_name(9)of_get_available_child_by_name(9)of_find_node_opts_by_path(9)of_find_node_by_name(9)of_find_compatible_node(9)of_find_node_with_property(9)of_match_node(9)of_find_matching_node_and_match(9)of_alias_from_compatible(9)of_find_node_by_phandle(9)of_parse_phandle_with_args_map(9)of_count_phandle_with_args(9)__of_add_property(9)of_add_property(9)of_remove_property(9)of_alias_scan(9)of_alias_get_id(9)of_alias_get_highest_id(9)of_console_check(9)of_find_next_cache_node(9)of_find_last_cache_level(9)of_map_id(9)of_map_iommu_id(9)of_map_msi_id(9)
All forty-four of them, accounted for, nobody left on read πβ¨
Genuinely obsessed with how clean this one is. Find the node, bump the refcount, put it back. That's the whole arc π
And that's a wrap, bestie π this came out of ./drivers/of and it's dated October 2026, still wearing the of_find_node_by_type(9) name tag like the icon it is. Mwah ππ
π¦ 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