css_next_descendant_post(9)
πΈ css_next_descendant_post(9) β Kernel API Manual, but make it make sense πΈ
okay bestie, welcome to the Kernel API Manual page for css_next_descendant_post(9) β the traversal helper that finds the next descendant for a post-order walk. It's giving cgroup tree energy, and we're keeping every detail, fr fr. π
β¨ NAME β¨
css_next_descendant_post β find the next descendant for post-order walk
π¦ SYNOPSIS π¦
struct cgroup_subsys_state * css_next_descendant_post (struct
cgroup_subsys_state *pos , struct cgroup_subsys_state *root );
π ARGUMENTS π
posβ the current position, and you passNULLto initiate traversal. iconic starting move.rootβ thecsswhose descendants to walk. That's the main character tree, periodt.
π DESCRIPTION π
This one is meant to be used by css_for_each_descendant_post, okay? Its whole job: find the next descendant to visit for post-order traversal of root's descendants. And yes, root is included in the iteration and is the last node to be visited β no cap. π
While this function requires cgroup_mutex or RCU read locking, it doesn't require the whole traversal to be contained in a single critical section. Also, it isn't necessary to hold onto a reference to pos. This function will return the correct next descendant as long as both pos and cgroup are accessible and pos is a descendant of cgroup. that's the vibe check β¨
If a subsystem synchronizes ->css_online and the start of iteration, a css which finished ->css_online is guaranteed to be visible in the future iterations and will stay visible until the last reference is put. A css which hasn't finished ->css_online or already finished ->css_offline may show up during traversal. It's each subsystem's responsibility to synchronize against on/offlining. pls handle your own on/offlining business, bestie π«Ά
lowkey important: the locking caveat is real β keep cgroup_mutex or RCU read locking in mind, and don't assume the whole traversal sits inside one critical section. π
π SEE ALSO π
Kernel file ./kernel/cgroup/cgroup.c β and then the whole friend group:
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_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_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)
okay that's the whole list, no skipping, no cap. π
and that's the page, bestie. source/version: ./kernel/cgroup, date: October 2026 β mwah, go walk that tree post-order and slay πβ¨
π¦ 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