KFunc scx_bpf_dsq_move
This function moves a task from DSQ iteration to a DSQ.
Definition
Transfer p
which is on the DSQ currently iterated by it__iter
to the DSQ specified by dsq_id
. All DSQs - local DSQs, global DSQ and user DSQs - can be the destination.
For the transfer to be successful, p
must still be on the DSQ and have been queued before the DSQ iteration started. This function doesn't care whether p
was obtained from the DSQ iteration. p
just has to be on the DSQ and have been queued before the iteration started.
p
's slice is kept by default. Use scx_bpf_dsq_move_set_slice
to update.
Can be called from sched_ext_ops.dispatch
or any BPF context which doesn't hold a BPF_PROG_TYPE_SYSCALL
programs).
Parameters
it__iter
: DSQ iterator in progress
p:
task to transfer
dsq_id
: DSQ to move p
to
enq_flags
: Bitfield of flags, see enum scx_enq_flags
for valid values.
Return
Returns true
if p
has been consumed, false
if p
had already been consumed or dequeued.
Signature
bool scx_bpf_dsq_move(struct bpf_iter_scx_dsq *it__iter, struct task_struct *p, u64 dsq_id, u64 enq_flags)
Usage
Docs could be improved
This part of the docs is incomplete, contributions are very welcome
Program types
The following program types can make use of this kfunc:
Example
Docs could be improved
This part of the docs is incomplete, contributions are very welcome