device_remove_file(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… device_remove_file β€” or, how to yeet a sysfs attribute file (kernel API manual, bestie edition)

okay so this is device_remove_file(9) from the Kernel API Manual, and it's genuinely one of the shorter ones, which honestly? a little slay. it just does one thing and does it. let's get into it πŸŽ€


✨ NAME ✨

device_remove_file β€” remove sysfs attribute file. that's it. that's the whole gig. she removes a file from sysfs. icon behavior πŸ’…


🌸 SYNOPSIS 🌸

void device_remove_file (struct device *dev , const struct
device_attribute *attr );

note the void β€” she returns nothing, she says nothing, she simply acts. main character energy, no receipts.


πŸ¦‹ ARGUMENTS πŸ¦‹

  • dev β€” device. (yes bestie, that's the whole description. the manpage is being mysterious. it's a struct device *, that's your target.)
  • attr β€” device attribute descriptor. this is your const struct device_attribute * β€” the thing telling everyone which attribute file is getting removed.

so like, dev says whose sysfs we're talking about, and attr says which file inside it. two besties, one job 🫢


πŸ‘‘ SEE ALSO πŸ‘‘

okay this part is LOWKEY A LOT. like, the entire device/fwnode/devlink cinematic universe showed up. no cap, here's everyone:

From the kernel file ./drivers/base/core.c:

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

like… 76 entries. she said "you want the whole friend group? you're getting the whole friend group." πŸ’€

pro tip tho: if you're looking for the other half of this duo, device_create_file(9) is right there in the list. and if you need the self-removing variant, that's device_remove_file_self(9). iykyk ✨


quick vibe check: nothing on this page is marked dangerous, deprecated or undefined β€” it's just a plain void function with two arguments. but PLEASE still read the argument types properly, const struct device_attribute * is not the same as struct device_attribute *, bestie 🫢

🌸 and that's the page!! source/version and date, as promised: this one comes from ./drivers/base, dated October 2026, and it's page device_remove_file(9) in the Kernel API Manual. go remove that file, you absolute legend πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from