device_links_busy(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so bestie, welcome to the Kernel API Manual page for device_links_busy(9) β€” yes it's a real one, yes it's iconic, no you can't skip it πŸŽ€


✨ NAME ✨

device_links_busy β€” check if there are any busy links to consumers. that's it. that's the whole job. πŸ’–


🌸 SYNOPSIS 🌸

bool device_links_busy (struct device *dev );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • dev β€” the device you wanna check. that's your main character right there 🫢

πŸ’– DESCRIPTION πŸ’–

okay so here's the vibe: this function goes through each consumer of the device and does a little vibe check on their links πŸ‘‘

it returns true if that link's status is one of "consumer probe" or "active" β€” which lowkey means the given consumer is probing right now, or its driver is present and accounted for. slay πŸ’…

otherwise? it flips the link state to "supplier unbind" so that consumer has zero chance of being probed successfully going forward. respectfully, it's over for them 😭

and if there are no probing or active consumers at all, it returns false. periodt ✨

🚨 tiny but important: links that don't have the DL_FLAG_MANAGED flag set are ignored. not our problem, not our business, we don't see them πŸ™ˆ

πŸ”₯ SEE ALSO πŸ”₯

the kernel file in question is ./drivers/base/core.c β€” and ngl the related-API list here is long long, so buckle up bestie 🌈

__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_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_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)

like I said. a whole friend group πŸ’€


and that's the page!! brought to you straight out of ./drivers/base, dated October 2026, under the watchful eye of the Kernel API Manual itself πŸ§šπŸ’œ

πŸ“¦ where this page comes from