scx_bpf_dsq_move_vtime(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ scx_bpf_dsq_move_vtime ✨

okay so bestie, this is scx_bpf_dsq_move_vtime from section 9 of the kernel API manual β€” literally the glow-up move for tasks in a DSQ iterator. stay with me πŸ’…


🌸 SYNOPSIS 🌸

__bpf_kfunc bool scx_bpf_dsq_move_vtime (struct bpf_iter_scx_dsq
*it__iter , struct task_struct *p , u64 dsq_id , u64 enq_flags );

πŸŽ€ ARGUMENTS πŸŽ€

  • it__iter β€” the DSQ iterator that's currently in progress, iykyk. it's the one doing the iterating πŸ¦‹
  • p β€” the task you're transferring. your main character, essentially ✨
  • dsq_id β€” the DSQ you're moving p to. destination unlocked πŸ“
  • enq_flags β€” the SCX_ENQ_* flags. flags on flags, no cap 🚩

πŸ’– DESCRIPTION πŸ’–

So here's the vibe: you take p β€” which is chilling on the DSQ that it__iter is currently iterating β€” and you transfer it over to the priority queue of the DSQ that dsq_id points to. slay πŸ’…

⚠️ but bestie, heads up: the destination must be a user DSQ, because only user DSQs support a priority queue. no user DSQ, no prio queue. that's the rule, periodt.

By default, p's slice and vtime are kept β€” like, they stay exactly as they are, untouched, iconic behaviour honestly πŸ‘‘. Wanna update them? use scx_bpf_dsq_move_set_slice and scx_bpf_dsq_move_set_vtime to make that happen πŸ”₯

Everything else? all other aspects are identical to scx_bpf_dsq_move. literally the same energy. and if you want the full lore on vtime, go read scx_bpf_dsq_insert_vtime β€” that's where the details live πŸ“š


πŸ¦‹ SEE ALSO πŸ¦‹

kernel file ./kernel/sched/ext/ext.c β€” plus the whole friend group:

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_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 thing, bestie 🫢 go move some tasks, keep those slices and vtimes cozy, and remember: user DSQs only. mwah πŸ’‹

signing off from ./kernel/sched/ext β€” dated October 2026, kernel API manual, section 9, scx_bpf_dsq_move_vtime(9) πŸŽ€βœ¨

πŸ“¦ where this page comes from