scx_task_slice_ended(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… scx_task_slice_ended(9) πŸ’…

okay so this is a page from the Kernel API Manual, and it's about scx_task_slice_ended β€” the little function that calls time on a task's slice. bestie, it's short but it matters. ✨


🌸 NAME 🌸

scx_task_slice_ended β€” @p's slice is consumed or given up</p> πŸ’€


πŸ¦‹ SYNOPSIS πŸ¦‹

void scx_task_slice_ended (struct rq *rq , struct task_struct *p );

like, that's it. two args. she's compact. no cap. πŸŽ€


πŸŽ€ ARGUMENTS πŸŽ€

  • rq β€” the rq that p is on. (the runqueue our girl is chilling on, basically)
  • p β€” the task of interest. the main character, fr. πŸ‘‘

πŸ’– DESCRIPTION πŸ’–

so what this does: it ends everything that rides on the slice β€” the protection, and also the rescue, if p happens to be in the middle of being rescued. both of those? wrapped up. gone. periodt. 🫢

now here's the nuance, and honestly it's giving "it's complicated" 😭:

A dequeue normally ends the slice too. like, standard behaviour, nothing weird.

The exception is a save/restore pair on the running task. that one does not end the slice β€” the running task keeps its thing going. iykyk.

Also, attribute changes like renice cycle the task through dequeue and enqueue while it keeps executing β€” so the slice just… continues. she's still going. slay. ✨

But a queued task instead loses its DSQ position on any dequeue, and the slice ends with it. like, if you're queued and you get dequeued, that's it, slice over, no coming back to your old spot. πŸ’€

ngl, key takeaway: dequeue β‰  automatically end of slice, except when it literally is. the save/restore pair on the running task and the renice dequeue/enqueue cycling are the vibes-off exceptions. queued task loses DSQ position β†’ slice ends. memorize it bestie 🧚

⭐ SEE ALSO ⭐

this list is long long, so buckle up. all of these live in the kernel file ./kernel/sched/ext/ext.c:

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), 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_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)

ok that's the whole squad. every single one. we do not skip entries on this page. πŸ’…

🌈 and that's the page!! tysm for reading, mwah πŸ’– β€” this one ships from ./kernel/sched/ext, dated October 2026, and it's literally the scx_task_slice_ended(9) manual page. go forth and end some slices, bestie. πŸŽ€πŸŒΈπŸ«Ά

πŸ“¦ where this page comes from