cgroup_apply_control(9)
π cgroup_apply_control(9) β the Kernel API Manual glow-up β¨
okay so bestie, buckle up, because this one is literally from the Kernel API Manual and it's about pushing your control mask updates down through a whole subtree. no cap, it's a whole vibe. π¦
πΈ NAME πΈ
cgroup_apply_control β apply control mask updates to the subtree. that's it. that's the whole job. slay. π
β SYNOPSIS β
int cgroup_apply_control (struct cgroup *cgrp );
like, one function, one pointer, and a whole lot of subtree drama. main character energy fr fr. π
π ARGUMENTS π
cgrpβ the root of the target subtree. this is where all the propagating starts, so like, choose wisely bestie π«Ά
β¨ DESCRIPTION β¨
so here's the tea: subsystems can be enabled and disabled in a subtree using the following steps. it's a whole little choreography and you gotta do them in order or it's giving chaos π
- Call
cgroup_save_controlto stash the current state. (yes, like saving your game before you do something unhinged. iconic.) - Update
->subtree_controlmasks in the subtree as desired. - Call
cgroup_apply_controlto apply the changes. π this is the one, this is our girl - Optionally perform other related operations.
- Call
cgroup_finalize_controlto finish up.
This function implements step 3 and propagates the mask changes throughout cgrp's subtree, updates csses accordingly and perform process migrations. so it's not just a pretty face β it actually does the work, walks the whole subtree, fixes up the csses, and does the process migrations too. ate and left no crumbs π₯
ngl, the whole point is that you don't skip straight to step 3. the save/finalize bracket is there for a reason, bestie π
π SEE ALSO π
Kernel file ./kernel/cgroup/cgroup.c β and then the whole extended friend group, iykyk:
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_attach_task(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_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)
and that's the whole page bestie π coming at you from ./kernel/cgroup, dated October 2026. go forth and propagate those masks responsibly π§ββοΈπΈ
π¦ 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