device_create_with_groups(9)
π device_create_with_groups(9) π
okay so bestie, welcome to the Kernel API Manual β this page is literally about device_create_with_groups, and yes it's as much of a mouthful as it sounds. it creates a device and registers it with sysfs π
β¨ SYNOPSIS β¨
struct device * device_create_with_groups (const struct class *class ,
struct device *parent , dev_t devt , void *drvdata , const struct
attribute_group **groups , const char *fmt , ... );
like, one function, seven-ish things going on. icon behavior fr fr π
πΈ ARGUMENTS πΈ
classβ pointer to thestruct classthat this device should be registered to π«Άparentβ pointer to the parentstruct deviceof this new device, if there is one (if not, no biggie)devtβ thedev_tfor the char device to be addeddrvdataβ the data to be added to the device for callbacks β yes, it's just vibes and a void pointergroupsβ aNULL-terminated list of attribute groups to be created πfmtβ string for the device's name β¨...β variable arguments (the little filler stars of the arg list π«)
π¦ DESCRIPTION π¦
so this function is for char device classes. a struct device will be created in sysfs, registered to the specified class. and the extra attributes you pass in the groups parameter? those get created automatically too. slay π
a "dev" file will be created, showing the dev_t for the device, if the dev_t is not 0,0. if you pass in a pointer to a parent struct device, the newly created struct device will be a child of that device in sysfs. the pointer to the struct device gets returned from the call, and any further sysfs files you might need can be created using this pointer π
returns struct device pointer on success, or ERR_PTR on error. no cap, that's the whole contract π
π SEE ALSO π
kernel file ./drivers/base/core.c β plus this absolutely enormous friend group of references, all listed exactly as-is because we do not skip the lore:
__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), 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_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)
lowkey that SEE ALSO list is giving "tagged everyone in the group chat" energy π but every single one of them is in there, promise.
and that's the page!! brought to you by ./drivers/base, dated October 2026, and titled device_create_with_groups(9) β go forth and register your devices, bestie π§π
π¦ 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