device_for_e...reverse_from(9)
π device_for_e...reverse_from(9)
okay so this is a page from the Kernel API Manual and we're about to get into device_for_each_child_reverse_from β yes the name is a whole mouthful, yes it's iconic, let's go π
β¨ NAME β¨
device_for_each_child_reverse_from β the device child iterator, but make it reversed π« (it walks the child list backwards, bestie).
πΈ SYNOPSIS πΈ
int device_for_each_child_reverse_from (struct device *parent , struct
device *from , void *data , device_iter_t fn );
π¦ ARGUMENTS π¦
parentβ the parentstruct device. like, the mom friend of the group chat πfromβ optional starting point in the child list. optional!! so you can just passNULLand vibe β¨dataβ data for the callback. it gets handed straight tofn, no questions asked π«Άfnβ the function to be called for each device. your little callback bestie π
π DESCRIPTION π
So what this does: it iterates over parent's child devices, starting at from, and calls fn for each one, passing it data. lowkey simple, highkey useful π
Heads up! This helper is identical todevice_for_each_child_reversewhenfromisNULL. no cap, literally the same behaviour in that case.
fn is checked each iteration. If it returns anything other than 0, the iteration stops and that value gets returned to the caller of device_for_each_child_reverse_from β so your callback's return value is the escape hatch, fr fr π (also yes, the original sentence stops there mid-thought, we do not fix the kernel docs, we respect them π).
π SEE ALSO π
Kernel file ./drivers/base/core.c, plus honestly a whole friend group of functions:
__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(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)
okay that's the whole thing, go iterate backwards and slay π β¨
source ./drivers/base π dated October 2026 πΈ mwah, bye bestie π«Άπ
π¦ 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