cpumask_nth_and_andnot(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 from 0. 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