scx_bpf_dsq_move(9)
β¨ scx_bpf_dsq_move β¨
Okay bestie, welcome to the scx_bpf_dsq_move</p> man page from the Kernel API Manual β this is the one where we move a task from a DSQ iteration to a DSQ and honestly? It's giving main character energy. Let's get into it π
πΈ SYNOPSIS πΈ
__bpf_kfunc bool scx_bpf_dsq_move (struct bpf_iter_scx_dsq *it__iter ,
struct task_struct *p , u64 dsq_id , u64 enq_flags );
No cap, that's the whole signature. Write it exactly like that, okay? π«Ά
π ARGUMENTS π
it__iterβ the DSQ iterator that's currently in progress, like the group chat you're scrolling through rnpβ the task you're transferring, the lucky main characterdsq_idβ the DSQ you're movingpto, its new home frenq_flagsβ these areSCX_ENQ_*flags, don't forget the underscore star, periodt
π DESCRIPTION π
So here's the vibe: you take p, which is chilling on the DSQ currently being iterated by it__iter, and you transfer it to the DSQ specified by dsq_id. And lowkey, all DSQs can be the destination β local DSQs, the global DSQ, and user DSQs. Every single one is fair game π
But now for the plot twist π β for the transfer to actually succeed, p must still be on the DSQ and have been queued before the DSQ iteration started. That's the rule, no exceptions. And here's the cute part: this function genuinely doesn't care whether p was obtained from the DSQ iteration. Nope. p just has to be on the DSQ and have been queued before the iteration started. That's it, that's the whole requirement, iykyk π¦
Also important bestie: p's slice is kept by default. If you wanna update it, you gotta use scx_bpf_dsq_move_set_slice. Don't forget that or you're gonna be confused later π
Where can you call this from? From ops.dispatch or any BPF context which doesn't hold a rq lock β like BPF timers or SYSCALL programs. Those are the approved hangout spots β¨
Now the return value, pay attention:
- Returns
trueifphas been consumed π - Returns
falseifphad already been consumed, dequeued, or β for sub-scheds β ifdsq_idpoints to a disallowed local DSQ π
That's the whole energy. Facts only, vibes immaculate.
π₯ SEE ALSO π₯
Okay this list is LONG and iconic, so buckle up bestie, we're listing every single one because that's the assignment and we don't skip π
Kernel file ./kernel/sched/ext/ext.c with all of these:
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_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_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)
β¨ And that's the whole page bestie! Sending you off with love from./kernel/sched/extβ this one's dated October 2026 and it's all aboutscx_bpf_dsq_move(9). Go forth and move those tasks, you absolute icon π§π
π¦ 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