for_each_cpu_from(9)
β¨ for_each_cpu_from(9) β¨
okay so bestie, welcome to the Kernel API Manual β yes we're literally in the kernel docs today and honestly? iconic behavior. this page is about for_each_cpu_from, a macro that loops over CPUs starting from a given one, and it's giving very much "small but mighty" energy π
πΈ NAME πΈ
for_each_cpu_from β iterate over CPUs present in @mask, from @cpu to the end of @mask.
like, that's the whole vibe fr fr π¦
π SYNOPSIS π
for_each_cpu_from (cpu , mask );
no cap, that's the exact call β parentheses, spaces and all π«Ά
π ARGUMENTS π
cpuβ the (optionally unsigned) integer iterator. yes bestie, it's the loop variable and the starting point, main character energy πmaskβ the cpumask pointer. this is the guest list of CPUs we're checking π
π₯ DESCRIPTION π₯
so for_each_cpu_from walks over the CPUs that are present in @mask, starting at @cpu and going all the way to the end of @mask. simple, elegant, slays π
the important bit though β after the loop, cpu is >= nr_cpu_ids. like, the iterator ends up past the end, that's just how it is, don't come for me, it's literally documented π
ngl this is the whole page, it's a small one, but every detail counts and we do NOT skip details here π§
π SEE ALSO π
okay this list is long and honestly kind of a serve, so buckle up bestie, we're going through all of them π
Kernel file ./include/linux/cpumask.h, plus:
cpumask_pr_args(9)cpumask_first(9)cpumask_first_zero(9)cpumask_first_and(9)cpumask_first_andnot(9)cpumask_first_and_and(9)cpumask_last(9)cpumask_next(9)cpumask_next_zero(9)cpumask_next_and(9)cpumask_next_andnot(9)cpumask_next_and_wrap(9)cpumask_next_wrap(9)cpumask_random(9)for_each_cpu(9)for_each_cpu_wrap(9)for_each_cpu_and(9)for_each_cpu_andnot(9)for_each_cpu_or(9)cpumask_any_but(9)cpumask_any_and_but(9)cpumask_any_andnot_but(9)cpumask_nth(9)cpumask_nth_and(9)cpumask_nth_and_andnot(9)cpumask_set_cpu(9)cpumask_clear_cpus(9)cpumask_clear_cpu(9)cpumask_test_cpu(9)cpumask_test_and_set_cpu(9)cpumask_test_and_clear_cpu(9)cpumask_setall(9)cpumask_clear(9)cpumask_and(9)cpumask_or(9)cpumask_weighted_or(9)cpumask_xor(9)cpumask_andnot(9)cpumask_equal(9)cpumask_or_equal(9)cpumask_intersects(9)cpumask_subset(9)cpumask_empty(9)cpumask_full(9)cpumask_weight(9)cpumask_weight_and(9)cpumask_weight_andnot(9)cpumask_shift_right(9)cpumask_shift_left(9)cpumask_copy(9)cpumask_any(9)cpumask_any_and(9)cpumask_of(9)cpumask_parse_user(9)cpumask_parselist_user(9)cpumask_parse(9)cpulist_parse(9)cpumask_size(9)alloc_cpumask_var(9)to_cpumask(9)num_online_cpus(9)cpumap_print_bitmask_to_buf(9)cpumap_print_list_to_buf(9)
and that's the whole page!! π
cute little sign-off: this one lives in./include/linux, dated October 2026, and yes it'sfor_each_cpu_from(9)from the Kernel API Manual β go forth and iterate responsibly bestie π
π¦ 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