__device_li...e_sync_state(9)
π
__device_li...e_sync_state(9) π
okay so bestie, welcome to the Kernel API Manual π β yes the title is lowkey truncated with dots and yes that's just how it is, we don't ask questions, we just vibe. This one's about __device_links_queue_sync_state, which honestly is giving "long name, big job" energy. Let's get into it π
β¨ NAME β¨
__device_links_queue_sync_state β Queue a device for sync_state() callback π¦
πΈ SYNOPSIS πΈ
void __device_links_queue_sync_state (struct device *dev , struct list_head *list );
π ARGUMENTS π
devβ the Device you want to callsync_stateon π«Άlistβ the List head you're queueing thedevon β
π₯ DESCRIPTION π₯
So here's the tea β: this function queues a device up for a sync_state callback, but specifically when the device links write lock isn't held. That's the whole point, iykyk β it lets the sync_state execution flow use device links APIs without things getting messy π
girl, listen π β the caller must ensure this function is called with device_links_write_lock held. That's not a suggestion, that's the rule, periodt.
This function does a get_device to make sure the device is not freed while it's sitting on this list. Very protective, very main character energy π
So the caller must also ensure that device_links_flush_sync_list is called as soon as the caller releases device_links_write_lock. Why? Because that's necessary to make sure the sync_state is called in a timely fashion β° and the put_device is called on this device. Both of those things need to happen, no cap π―
π SEE ALSO π
Kernel file ./drivers/base/core.c β and now the friend group, because there's a lot of them π§β¨
__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_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_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 πβ¨
tiny sign-off moment π β this one lives in ./drivers/base, stamped October 2026, and it's still __device_li...e_sync_state(9) because the title said so ππ
π¦ 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