cpumask_nth_and_andnot(9)
π cpumask_nth_and_andnot β a kernel API manual, but make it cute
okay bestie, welcome to cpumask_nth_and_andnot(9) β¨ this is a real function from the Kernel API Manual and honestly it's giving "niche but iconic." let's get into it π
πΈ NAME πΈ
cpumask_nth_and_andnot β grab the Nth cpu that's set in the 1st and 2nd cpumask, and clear in the 3rd. that's the whole vibe. three masks, one job π
β¨ SYNOPSIS β¨
unsigned int cpumask_nth_and_andnot (unsigned int cpu , const struct
cpumask *srcp1 , const struct cpumask *srcp2 , const struct cpumask
*srcp3 );
like, verbatim, no cap. copy it exactly, don't get creative with it π
π«Ά ARGUMENTS π«Ά
cpuβ the Nth cpu to find, starting from0. yes bestie, zero-indexed, that's just how we live β¨srcp1β the cpumask pointer. that's it. that's the description. πsrcp2β the cpumask pointer. (her again.) πΈsrcp3β the cpumask pointer. three of them. iconic trio honestly π
lowkey the original docs just say "the cpumask pointer" for all three and honestly? respect. minimalism. π
π₯ RETURN π₯
returns >= nr_cpu_ids if such cpu doesn't exist. so if you get a number that big, that's your sign the cpu you were looking for said "not today" and dipped π no error code, no drama, just a number too big. iykyk.
π¦ SEE ALSO π¦
buckle up bestie, this is the whole friend group π«Ά β and yes, we're listing every single one, don't @ me:
Kernel file ./include/linux/cpumask.h
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), for_each_cpu_from(9), cpumask_any_but(9), cpumask_any_and_but(9), cpumask_any_andnot_but(9), cpumask_nth(9), cpumask_nth_and(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)
that's the whole roster, no skips, no cuts π
π sign-off π
this lil masterpiece lives in ./include/linux, is dated October 2026, and the version/source line on the tin reads ./include/linux + October 2026 + cpumask_nth_and_andnot(9). slay, periodt, go read cpumask_nth_and(9) next if you're feeling spicy πΆοΈπ
π¦ 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