device_for_...hild_reverse(9)
π device_for_...hild_reverse(9) β Kernel API Manual, bestie edition π
okay so picture this: it's a Kernel API Manual page, section 9, and the name got a lil truncated in the header (we don't talk about that, it's giving "username taken so I added an underscore"). Anyway. Sit down, grab a strawberry drink π, and let's talk about walking a device tree backwards.
β¨ NAME β¨
device_for_each_child_reverse β the device child iterator but in reversed order, no cap π¦
β¨ SYNOPSIS β¨
int device_for_each_child_reverse (struct device *parent , void *data ,
device_iter_t fn );
πΈ ARGUMENTS πΈ
parentβ the parentstruct device. the main character of this whole operation πdataβ the data you're handing off to the callback. consider it the little gift bag you pass along πfnβ the function that gets called for each device. your callback, your moment to shine β¨
π DESCRIPTION π
so basically you iterate over parent's child devices, and for each one you call fn, passing it data. like a little roll call but in reverse and way cuter π
and the way that we check the return of fn every single time β not once, not twice, every time β because we're thorough like that. if it returns anything other than 0, we break out and return that value. periodt. π«Ά
π₯ SEE ALSO π₯
it's in the kernel file ./drivers/base/core.c, and honestly the whole friend group is here, iykyk:
__fwnode_link_add(9), __fwnode_link_del(9), __fwnode_link_cycle(9), fwnode_links_purge_suppliers(9), fwnode_links_purge_consumers(9), fwnode_links_purge(9), __fwnode_links_move_consumers(9), __fw_devlink_pickup_dangling_consumers(9), fw_devlink_refresh_fwnode(9), device_is_dependent(9), device_pm_move_to_tail(9), device_link_wait_removal(9), device_link_add(9), device_link_del(9), device_link_remove(9), device_links_check_suppliers(9), __device_links_queue_sync_state(9), device_links_flush_sync_list(9), device_links_force_bind(9), device_links_driver_bound(9), __device_links_no_driver(9), device_links_no_driver(9), device_links_driver_cleanup(9), device_links_busy(9), device_links_unbind_consumers(9), device_links_purge(9), wait_for_init_devices_probe(9),
fwnode_is_ancestor_of(9), fwnode_get_next_parent_dev(9), __fw_devlink_relax_cycles(9), fw_devlink_create_devlink(9), __fw_devlink_link_to_consumers(9), __fw_devlink_link_to_suppliers(9), dev_driver_string(9), device_release(9), devm_device_add_group(9), devices_kset_move_before(9), devices_kset_move_after(9), devices_kset_move_last(9), device_create_file(9), device_remove_file(9), device_remove_file_self(9), device_create_bin_file(9), device_remove_bin_file(9), device_initialize(9), kobject_has_children(9), dev_set_name(9), device_add(9), device_register(9),
get_device(9), put_device(9), device_del(9), device_unregister(9), device_get_devnode(9), device_for_each_child(9), device_for_each_child_reverse_from(9), device_find_child(9), device_offline(9), device_online(9), __root_device_register(9), root_device_unregister(9), device_create(9), device_create_with_groups(9), device_destroy(9), device_rename(9), device_move(9), device_change_owner(9), device_shutdown(9), dev_err_probe(9), dev_warn_probe(9), set_primary_fwnode(9), set_secondary_fwnode(9), device_remove_of_node(9), device_add_of_node(9), device_set_of_node_from_dev(9), get_dev_from_fwnode(9)
π real talk: iffnreturns anything other than0, iteration stops right there and that value comes right back at you. not a drill, just the rules π«Ά
and that's the whole page bestie!! sourced straight from ./drivers/base, dated October 2026, part of the Kernel API Manual β go forth and iterate in reverse, you absolute icon πππ
π¦ 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