cpumask_test_and_set_cpu(9)
π cpumask_test_and_set_cpu β from the Kernel API Manual, bestie π
okay so picture this: you're deep in the kernel, you've got a cpumask, and you need to check one cpu AND flip it on, all in one go, with zero race conditions. that's this function. she's the atomic queen. slay. π
β¨ NAME β¨
cpumask_test_and_set_cpu β atomically test and set a cpu in a cpumask π
πΈ SYNOPSIS πΈ
bool cpumask_test_and_set_cpu (int cpu , struct cpumask *cpumask );
π¦ ARGUMENTS π¦
cpuβ the cpu number you're checking, and the vibe check on this one is it must be< nr_cpu_idsπ (respect the limit, bestie)cpumaskβ the cpumask pointer. that's your bitmap, your little roster of cpus π«Ά
π§ DESCRIPTION π§
literally it's a test_and_set_bit wrapper for cpumasks. that's the whole thing, and honestly? iconic. π
π₯ RETURN π₯
true if cpu was set in the old bitmap of cpumask β else it returns false. so you're peeking at the state before the set, not after. iykyk. π
π SEE ALSO π
so many friends, one big family reunion, and every single one of them is here π
cpumask_pr_args(9)- the first-girlies:
cpumask_first(9),cpumask_first_zero(9),cpumask_first_and(9),cpumask_first_andnot(9),cpumask_first_and_and(9),cpumask_last(9) - the next-up crew:
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) - the loop icons:
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) - the picky ones:
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) - the set/clear squad:
cpumask_set_cpu(9),cpumask_clear_cpus(9),cpumask_clear_cpu(9),cpumask_test_cpu(9),cpumask_test_and_clear_cpu(9),cpumask_setall(9),cpumask_clear(9) - the bitwise besties:
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) - the glow-up/dupes:
cpumask_shift_right(9),cpumask_shift_left(9),cpumask_copy(9) - the "just give me one":
cpumask_any(9),cpumask_any_and(9),cpumask_of(9) - the text-parsing girlies:
cpumask_parse_user(9),cpumask_parselist_user(9),cpumask_parse(9),cpulist_parse(9) - the sizing & allocation corner:
cpumask_size(9),alloc_cpumask_var(9),to_cpumask(9),num_online_cpus(9) - the printer besties:
cpumap_print_bitmask_to_buf(9),cpumap_print_list_to_buf(9)
and if you wanna read the source yourself (main character behavior honestly), it lives in the kernel file ./include/linux/cpumask.h π
ngl the one rule here:cpuhas to be< nr_cpu_ids. no cap. don't be out here passing a cpu number that doesn't exist π
that's the whole page bestie!! brought to you by ./include/linux, dated October 2026, and this little header goes out to cpumask_test_and_set_cpu(9) β atomic, adorable, absolutely ate. periodt. ππΈβ¨
π¦ 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