cpumask_any_but(9)
π cpumask_any_but β kernel API manual, but make it cute
okay bestie, welcome to the kernel API manual β¨ this one lives in section 9 and it's literally called cpumask_any_but β yes, it's a whole function for "gimme a cpu, just NOT that one" π«Ά
πΈ NAME πΈ
cpumask_any_but β return an arbitrary cpu in a cpumask, but not this one. periodt. π
β¨ SYNOPSIS β¨
unsigned int cpumask_any_but (const struct cpumask *mask , int cpu );
that's the whole vibe β takes a mask, takes a cpu, hands you back an unsigned int π
π¦ ARGUMENTS π¦
maskβ the cpumask to search π like, the guest list you're scanningcpuβ the cpu to ignore. π not you, bestie
π DESCRIPTION π
so the way this works is: it's often used to find any cpu but smp_processor_id in a mask. main character energy β everyone's invited except the cpu that's literally already running the code π
and here's the lil twist π if cpu == -1, the function is equivalent to cpumask_any. so passing -1 is basically the "no exclusions, we're all slaying" mode πβ¨
π RETURN π
returns >= nr_cpu_ids if no cpus set. that's the "nobody showed up to the party" outcome β it's not an error code, it's just a value that's out of range so you can tell it happened π
π SEE ALSO π
the whole friend group, no cap β 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), for_each_cpu_from(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) π§π
that's the whole page, bestie, you ate it up fr fr π this one ships from ./include/linux, dated October 2026, and it's cpumask_any_but(9) all the way down β go be the exception in someone's mask π
π
π¦ 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