device_initialize(9)
β¨ 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, useput_deviceto give up your reference instead of freeingdevdirectly. this is the rule, bestie β do not freedevdirectly π
π 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
- 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