scx_bpf_online_cmask(9)
π scx_bpf_online_cmask π
okay so bestie, welcome to the Kernel API Manual β yes that's the manual name, we're fancy here β and today's main character is scx_bpf_online_cmask, a little kfunc with big "here's your mask" energy. let's get into it π
β¨ NAME β¨
scx_bpf_online_cmask β returns the online cid mask from the scheduler arena. that's it, that's the whole vibe πΈ
π¦ SYNOPSIS π¦
__bpf_kfunc const void * scx_bpf_online_cmask (const struct bpf_prog_aux
*aux );
literally just hand it the aux and it hands you back a const void *. no cap. β¨
π ARGUMENTS π
auxβ the implicit BPF argument that gets you intobpf_prog_aux. it's hidden from BPF progs, so likeβ¦ it's there, you just don't get to see it.π
π DESCRIPTION π
so what does it actually do. it returns a kernel-maintained cmask that covers [0, scx_bpf_nr_cids). that's the range, periodt. π₯
but β and this is the important part β it returns NULL in two situations:
- if the calling program is not associated with a live cid-form scheduler, or
- if the mask is not allocated yet, as in
ops.init_cids.
so like, vibe check your return value before you go dereferencing anything, bestie π
treat the mask as read-only β even though arena memory stays writable by the BPF scheduler. the memory being writable does not mean you should write to it. hands off. π
the mask follows the SCX hotplug notifications: a cid's bit gets updated before ops.cid_online/ops.offline runs for it. so the ordering is already handled for you, slay. π«Ά
the pointer is valid from ops.init through ops.exit. that's the window. don't go holding onto it past that, that's not the vibe.
also: root ops.init runs with hotplug excluded. but other contexts can observe concurrent updates β so yeah, concurrency is real, stay aware. π
π SEE ALSO π
this is the part where the manpage goes absolutely feral with cross-references. buckle up babes, we're listing all of them fr fr π
kernel file ./kernel/sched/ext/ext.c, plus:
scx_is_descendant(9)rq_is_open(9)scx_fill_cmask_scratch(9)scx_call_op_set_cpumask(9)nldsq_next_task(9)nldsq_cursor_next_task(9)nldsq_cursor_lost_task(9)scx_task_iter_start(9)scx_task_iter_unlock(9)scx_task_iter_relock(9)scx_task_iter_stop(9)scx_task_iter_next(9)scx_task_iter_next_locked(9)scx_dump_event(9)wait_ops_state(9)scx_cpu_valid(9)schedule_deferred(9)schedule_deferred_locked(9)dsq_insert_head(9)set_task_slice_keep_oob(9)scx_task_slice_ended(9)move_remote_task_to_local_dsq(9)unlink_dsq_and_switch_rq_lock(9)move_task_between_dsqs(9)dispatch_to_local_dsq(9)finish_dispatch(9)scx_prio_less(9)__scx_init_task(9)task_dead_and_done(9)scx_tg_sched(9)scx_tg_knob_sched(9)handle_lockup(9)scx_rcu_cpu_stall(9)scx_softlockup(9)scx_hardlockup(9)unbypass_renotify_idle(9)scx_bypass(9)scx_propagate_exit_irq_workfn(9)scx_flush_disable_work(9)print_scx_info(9)scx_bpf_dsq_insert___v2(9)__scx_bpf_dsq_insert_vtime(9)scx_bpf_dispatch_nr_slots(9)scx_bpf_dispatch_cancel(9)scx_bpf_dsq_move_to_local___v2(9)scx_bpf_dsq_move_set_slice(9)scx_bpf_dsq_move_set_vtime(9)scx_bpf_dsq_move(9)scx_bpf_dsq_move_vtime(9)scx_bpf_reenqueue_local(9)scx_bpf_create_dsq(9)scx_bpf_task_set_slice(9)scx_bpf_task_set_dsq_vtime(9)scx_bpf_kick_cpu(9)scx_bpf_kick_cid(9)scx_bpf_dsq_nr_queued(9)scx_bpf_destroy_dsq(9)bpf_iter_scx_dsq_new(9)bpf_iter_scx_dsq_next(9)bpf_iter_scx_dsq_destroy(9)scx_bpf_dsq_peek(9)scx_bpf_dsq_reenq(9)scx_bpf_reenqueue_local___v2(9)scx_bpf_exit_bstr(9)scx_bpf_error_bstr(9)scx_bpf_dump_bstr(9)scx_bpf_cpuperf_cap(9)scx_bpf_cidperf_cap(9)scx_bpf_cpuperf_cur(9)scx_bpf_cidperf_cur(9)scx_bpf_cpuperf_set(9)scx_bpf_cidperf_set(9)scx_bpf_nr_node_ids(9)scx_bpf_nr_cpu_ids(9)scx_bpf_nr_cids(9)scx_bpf_nr_online_cids(9)scx_bpf_this_cid(9)scx_bpf_get_possible_cpumask(9)scx_bpf_get_online_cpumask(9)scx_bpf_put_cpumask(9)scx_bpf_task_running(9)scx_bpf_task_cpu(9)scx_bpf_task_cid(9)scx_bpf_locked_rq(9)scx_bpf_cpu_curr(9)scx_bpf_cid_curr(9)scx_bpf_tid_to_task(9)scx_bpf_now(9)scx_bpf_events(9)scx_bpf_task_cgroup(9)
and that's the page, bestie π«Ά coming at you straight from the kernel source at ./kernel/sched/ext, born October 2026, manual name Kernel API Manual. go forth and read your mask (read-only!!) πβ¨π
π¦ 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