cgroup_v1v2_get_from_fd(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cgroup_v1v2_get_from_fd β€” Kernel API Manual realness πŸ’–

okay so bestie, gather round, because this is a page from the Kernel API Manual and it's genuinely so niche and so cute. The function is cgroup_v1v2_get_from_fd and yeah, the name is a whole mouthful, but it's literally just "gimme the cgroup from this fd" energy. iykyk πŸ¦‹


✨ NAME ✨

cgroup_v1v2_get_from_fd β€” get a cgroup pointer from a fd πŸŽ€


✨ SYNOPSIS ✨

struct cgroup * cgroup_v1v2_get_from_fd (int fd );

like, that's the whole signature, she's not complicated, she's just doing her thing πŸ’…


✨ ARGUMENTS ✨

  • fd β€” the fd you got from open(cgroup_dir). that's it. that's the vibe check. it's gotta be a cgroup directory fd, no cap πŸ™ˆ

✨ DESCRIPTION ✨

so what she does is: she finds the cgroup from a fd, and that fd should be the one you obtained by opening a cgroup directory (yes, we're being strict about this, it's giving "read the instructions" energy πŸ‘‘).

on success she returns a pointer to the cgroup. slay. ✨

but if the cgroup cannot be found? ERR_PTR gets returned. not NULL, not a fun surprise β€” ERR_PTR. so bestie please check with IS_ERR before you go dereferencing anything, because that's the whole point of the error-pointer convention and we respect it here 🫢


🌈 SEE ALSO 🌈

the kernel file ./kernel/cgroup/cgroup.c is where the magic lives, and then there's a genuinely iconic lineup of friends β€” like the extended group chat of the cgroup subsystem:

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_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_get_from_fd(9), cgroup_parse_float(9)

note how cgroup_get_from_fd(9) and cgroup_v1v2_get_from_file(9) are both chilling in there β€” siblings!! main character energy runs in the family πŸ’€

that's the whole page, bestie, she's short and she's powerful 🧚

sign-off szn: this one lives under ./kernel/cgroup, and the docs are stamped October 2026 in the Kernel API Manual. go forth and check your ERR_PTRs, ily, bye πŸ’œπŸŒΈ

πŸ“¦ where this page comes from