scx_bpf_get...cpumask_node(9)
π scx_bpf_get_idle_cpumask_node β Kernel API Manual β¨
okay so bestie, welcome to the Kernel API Manual page for scx_bpf_get_idle_cpumask_node(9) π β the whole page is literally titled scx_bpf_get...cpumask_node(9) so you already know what's up before you even scroll.
πΈ NAME πΈ
scx_bpf_get_idle_cpumask_node β grab a referenced kptr to the idle-tracking per-CPU cpumask of a target NUMA node. that's it, that's the vibe π¦
β¨ SYNOPSIS β¨
__bpf_kfunc const struct cpumask * scx_bpf_get_idle_cpumask_node (s32
node , const struct bpf_prog_aux *aux );
literally copy that exactly, no cap π₯
π«Ά ARGUMENTS π«Ά
nodeβ the target NUMA node. which node are we looking at? this one πauxβ the implicit BPF argument that lets you accessbpf_prog_aux, hidden from BPF progs. it's giving backstage pass, you don't touch it, it's just there π
π DESCRIPTION π
So here's the tea: you get back an empty cpumask in any of these situations β
- idle tracking is not enabled
nodeis not valid- you're running on a UP kernel
and when that happens? the actual error gets reported to the BPF scheduler via scx_error π so like, the empty mask is the messenger, scx_error is the actual receipts fr fr.
π₯ SEE ALSO π₯
Kernel file ./kernel/sched/ext/idle.c β go read it, it ate π
scx_bpf_cpu_node(9)scx_bpf_select_cpu_dfl(9)__scx_bpf_select_cpu_and(9)scx_bpf_get_idle_cpumask(9)scx_bpf_get_idle_smtmask_node(9)scx_bpf_get_idle_smtmask(9)scx_bpf_put_idle_cpumask(9)scx_bpf_test_and_clear_cpu_idle(9)scx_bpf_pick_idle_cpu_node(9)scx_bpf_pick_idle_cpu(9)scx_bpf_pick_any_cpu_node(9)scx_bpf_pick_any_cpu(9)
like the whole idle-scheduling friend group showed up to the function π
and that's the page, bestie π it comes to you from ./kernel/sched/ext, dated October 2026, and the whole thing lives under the Kernel API Manual name β mwah, 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