scx_bpf_kick_cpu(9)
π
scx_bpf_kick_cpu β the Kernel API Manual page, bestie edition π¦
okay so quick vibe check: this is scx_bpf_kick_cpu from the Kernel API Manual (section 9, kernel-funcs, iykyk), and it's literally the "hey girl, wake UP" of the sched_ext world. ngl it's a tiny page but it's iconic. let's get into it β¨
πΈ NAME πΈ
scx_bpf_kick_cpu β trigger a reschedule on a CPU π«Ά
like, you point at a CPU and you're like "bestie, reschedule." that's the whole job.
π SYNOPSIS π
__bpf_kfunc void scx_bpf_kick_cpu (s32 cpu , u64 flags , const struct bpf_prog_aux *aux );
look at her. three params, no notes. slay. π
β¨ ARGUMENTS β¨
cpuβ the cpu you're kicking π (yes, it'ss32, and yes, it's the cpu to kick, no cap)flagsβ theSCX_KICK_*flags, so you can fine-tune the kick instead of just raw-dogging it πauxβ the implicit BPF argument that gives you access tobpf_prog_aux. and it is hidden from BPF progs, so don't go looking for it, it's not gonna be there π
π₯ DESCRIPTION π₯
so basically: kick cpu into rescheduling. that's the assignment. π
you can use this to wake up an idle CPU, or to trigger rescheduling on a busy CPU β either way, the CPU gets the message. fr fr. π
the tea though: you can call this from any online scx_ops operation, but the actual kicking doesn't happen right that second β the real kick is performed asynchronously through an irq work. so you're not doing the work, you're just sending the invite, and irq work is the one who actually shows up to the party. π
ngl the async part is the main character here β don't assume the kick already happened by the time you return. it's giving "sent, not delivered." π
π SEE ALSO π
kernel file ./kernel/sched/ext/ext.c β and honestly the whole friend group showed up for this one, so here's the entire group chat, in order, no one left out π«Ά:
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_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_online_cmask(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)
that's the whole roster, go read them, they're all valid and they all ate π
and that's the page!! mwah π this lil gem lives in ./kernel/sched/ext, dated October 2026 β go off, kernel docs, 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