device_create_with_groups(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 the struct class that this device should be registered to 🫢
  • parent β€” pointer to the parent struct device of this new device, if there is one (if not, no biggie)
  • devt β€” the dev_t for the char device to be added
  • drvdata β€” the data to be added to the device for callbacks β€” yes, it's just vibes and a void pointer
  • groups β€” a NULL-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