device_link...nd_consumers(9)
π device_link...nd_consumers(9) π
okay so real talk, this is a page from the Kernel API Manual and it's about making devices let go of each other. bestie, it's giving "forced breakup" energy and honestly? iconic. let's get into it π«Ά
β¨ NAME β¨
device_links_unbind_consumers β force the consumers of the given device to unbind. not a drill, not a vibe, an actual force-unbind π
πΈ SYNOPSIS πΈ
void device_links_unbind_consumers (struct device *dev );
literally one argument, no cap. one singular struct device * and that's the whole cast π
π¦ ARGUMENTS π¦
devβ the device whose consumers you're about to unbind. yes, that device. the one you're holding. the main character π₯
π DESCRIPTION π
so here's the tea, bestie. it walks the list of links to consumers for dev, and if any of them is sitting in the "consumer probe" state, it waits for all device probes in progress to complete and then starts over. like, it doesn't fight the in-flight probes, it just waits politely and tries again. so patient. so mature. we love to see it β¨
if that's not the case β like, no consumer is mid-probe β then it changes the status of the link to "supplier unbind" and checks whether the link was in the "active" state. and if it was? boom. it forces the consumer driver to unbind and starts over. π
and no, the consumer does not re-probe β because we already changed the state of the link, so it's not coming back. that door is closed. periodt. πͺπ
also, important: links without the DL_FLAG_MANAGED flag set are ignored. if it's not managed, it's not our business. minding our own business is a full-time job tbh π
β SEE ALSO β
the full friend group, lowercase and in order, no cap β and yeah, the kernel file is ./drivers/base/core.c:
__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_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_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)
and that's the whole page, bestie, you ate that π
π sign-off time: this one lives in ./drivers/base, and the page is dated October 2026. go forth and unbind responsibly, iykyk π
β¨
π¦ 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