css_next_child(9)
π css_next_child(9) β Kernel API Manual π
okay bestie, welcome to the css_next_child glow-up β¨ this is a <section 9> kernel API page, and yes it's a whole vibe.
β¨ NAME β¨
css_next_child β find the next child of a given css π
πΈ SYNOPSIS πΈ
struct cgroup_subsys_state * css_next_child (struct cgroup_subsys_state
*pos , struct cgroup_subsys_state *parent );
π¦ ARGUMENTS π¦
posβ the current position, like where you're at right now in the scroll π passNULLto initiate traversal (i.e. start from the top, main-character style)parentβ the css whose children we're walking through, the momager of this whole situation π
β DESCRIPTION β
So this function returns the next child of parent, and it should be called under either cgroup_mutex or an RCU read lock π that's the rule, no cap. The only requirement is that parent and pos are accessible. And the next sibling is guaranteed to be returned regardless of their states β icon behaviour, honestly π«Ά
If a subsystem synchronizes ->css_online and the start of iteration, then a css which finished ->css_online is guaranteed to be visible in the future iterations, and it will stay visible until the last reference is put. periodt β¨
π but heads up: a css which hasn't finished->css_onlineor has already finished->css_offlinemay show up during traversal. that's just how it is. it's each subsystem's responsibility to synchronize against on/offlining β so like, do your own vibe check, bestie π
π₯ SEE ALSO π₯
Kernel file ./kernel/cgroup/cgroup.c β plus the whole extended friend group, because this function literally knows everyone π«Ά
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_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 page, bestie, you ate π
shoutout to the source dir ./kernel/cgroup and the date October 2026 β this page is timestamped and looking flawless πβ¨π
π¦ 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