device_initialize(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ device_initialize(9) ✨

okay so bestie, this is the Kernel API Manual page for device_initialize(9) β€” and yes, it's about to make device structs make sense πŸ’…


πŸ’– NAME πŸ’–

device_initialize β€” init device structure. periodt.

πŸŽ€ SYNOPSIS πŸŽ€

void device_initialize (struct device *dev );

🧚 ARGUMENTS 🧚

  • dev β€” the device. that's the whole argument, no cap 🫢

🌸 DESCRIPTION 🌸

This preps the device for use by other layers by initializing its fields. It's the first half of device_register when that function calls it, but it can totally also be called separately, so you can use dev's fields. In particular, get_device/put_device may be used for reference counting of dev after calling this function β€” iconic behavior, honestly πŸ’–

Every field in dev must be initialized by the caller to 0, except for the ones explicitly set to some other value. The simplest approach is to use kzalloc to allocate the structure containing dev ✨

🫢 NOTE 🫢

Once you've called this function, use put_device to give up your reference instead of freeing dev directly. this is the rule, bestie β€” do not free dev directly 😭

🌈 SEE ALSO 🌈

Kernel file ./drivers/base/core.c is the source file, and these are the linked faves β€” all (9) energy, no cap:

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

source/version: ./drivers/base 🫢 β€” October 2026 β€” device_initialize(9) πŸ’…

πŸ“¦ where this page comes from