cgroup_attach_task(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cgroup_attach_task β€” Kernel API Manual energy ✨

okay bestie, we're diving into the kernel API manual today β€” yes, that manual β€” and this one's about cgroup_attach_task(9), aka the function that scoops up a task (or a whole entire threadgroup, no big deal) and drops it into a cgroup. cgroups are the main character of resource management, and this is the little glue function that does the actual yeeting. let's go πŸŽ€


🌸 NAME 🌸

cgroup_attach_task β€” attaches a task or a whole threadgroup to a cgroup. that's the whole vibe. two-for-one. iconic.


✨ SYNOPSIS ✨

int cgroup_attach_task (struct cgroup *dst_cgrp , struct task_struct
*leader , bool threadgroup );

like, look at that signature. three args, one int coming back at you. slay.


πŸ¦‹ ARGUMENTS πŸ¦‹

  • dst_cgrp β€” the cgroup you're attaching to. the destination. the home. the place where the task is gonna live now πŸ’…
  • leader β€” the task itself, or, if you're doing the group thing, the leader of the threadgroup that's getting attached. leader behaviour, fr.
  • threadgroup β€” the big question: are we attaching the whole threadgroup? yes or no, that's the bool, that's the vibe check right there 🫢

πŸ’œ DESCRIPTION πŸ’œ

here's the whole description, and it's short and spicy: Call holding cgroup_mutex and cgroup_threadgroup_rwsem.

that's it. that's the whole thing. so like β€” when you call this, you gotta be holding both of those locks. cgroup_mutex and cgroup_threadgroup_rwsem. no cap, both of them. don't come at this function empty-handed πŸ™ˆ

⚠️ for real though, this is the kind of note you do not skip. the page says call it holding those locks, so you hold those locks. periodt.

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./kernel/cgroup/cgroup.c β€” that's where the source lives, go say hi 🧚

and now, the friendship bracelet of cross-references. every single one, in order, exactly as the page lists them:

cgroup_ssid_enabled(9), cgroup_on_dfl(9), cgroup_e_css_by_mask(9), cgroup_e_css(9), cgroup_get_e_css(9), __cgroup_task_count(9), cgroup_task_count(9), for_each_css(9), do_each_subsys_mask(9), css_set_populated(9), css_update_populated(9), css_set_update_populated(9), css_set_move_task(9), compare_css_sets(9), find_existing_css_set(9), allocate_cgrp_cset_links(9), link_css_set(9), find_css_set(9), cgroup_file_mode(9), cgroup_calc_subtree_ss_mask(9),

cgroup_kn_unlock(9), cgroup_kn_lock_live(9), css_clear_dir(9), css_populate_dir(9), cgroup_attach_lock(9), cgroup_attach_unlock(9), cgroup_migrate_add_task(9), cgroup_taskset_first(9), cgroup_taskset_next(9), cgroup_migrate_execute(9), cgroup_migrate_vet_dst(9), cgroup_migrate_finish(9), cgroup_migrate_add_src(9), cgroup_migrate_prepare_dst(9), cgroup_migrate(9), cgroup_update_dfl_csses(9),

cgroup_lock_and_drain_offline(9), cgroup_save_control(9), cgroup_propagate_control(9), cgroup_restore_control(9), cgroup_apply_control_enable(9), cgroup_apply_control_disable(9), cgroup_apply_control(9), cgroup_finalize_control(9), cgroup_enable_threaded(9), cgroup_tryget_css(9), cgroup_addrm_files(9), cgroup_rm_cftypes(9), cgroup_add_cftypes(9), cgroup_add_dfl_cftypes(9), cgroup_add_legacy_cftypes(9), cgroup_file_notify(9), cgroup_file_show(9),

css_next_child(9), css_next_descendant_pre(9), css_rightmost_descendant(9), css_next_descendant_post(9), css_has_online_children(9), css_task_iter_advance_css_set(9), css_task_iter_start(9), css_task_iter_next(9), css_task_iter_end(9), css_create(9), kill_css_sync(9), kill_css_finish(9), cgroup_destroy_locked(9), cgroup_init_early(9), cgroup_init(9), cgroup_fork(9), cgroup_v1v2_get_from_file(9), cgroup_get_from_file(9),

cgroup_css_set_fork(9), cgroup_css_set_put_fork(9), cgroup_can_fork(9), cgroup_cancel_fork(9), cgroup_post_fork(9), cgroup_task_exit(9), css_tryget_online_from_dir(9), css_from_id(9), cgroup_get_from_path(9), cgroup_v1v2_get_from_fd(9), cgroup_get_from_fd(9), cgroup_parse_float(9)

that's the whole list, ate and left no crumbs πŸ”₯


πŸ’€ also quick note that this page is very "trust me bro" about its DESCRIPTION β€” one line, two locks, that's your lot. but honestly? sometimes less is more and this is one of those times. lowkey obsessed.

and that's the page, bestie 🌈 this one's from the ./kernel/cgroup source and it's dated October 2026, filed under cgroup_attach_task(9). go forth, hold your locks, attach your tasks πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from