bpf_iter_scx_dsq_destroy(9)
π
bpf_iter_scx_dsq_destroy(9) β from the Kernel API Manual β¨
okay so bestie, welcome to the little page that does the cleanup β the "and we're done here" of the DSQ iterator world π
πΈ NAME πΈ
bpf_iter_scx_dsq_destroy β literally just destroys a DSQ iterator. that's it. that's the whole job. and honestly? iconic π
β¨ SYNOPSIS β¨
__bpf_kfunc void bpf_iter_scx_dsq_destroy (struct bpf_iter_scx_dsq *it
);
so it returns void (nothing, nada, we don't do receipts here π«Ά) and it takes exactly one thing: a pointer to a struct bpf_iter_scx_dsq. periodt.
π¦ ARGUMENTS π¦
itβ the iterator you want to destroy π that's the one. the only one. hand it over.
π DESCRIPTION π
it undoes bpf_iter_scx_dsq_new. that's the whole description in the original and ngl it's giving "terse queen" energy π
so like β you called bpf_iter_scx_dsq_new at some point to spin up an iterator, and now you're done with it, so you call this to undo that. new one in, destroy it after. clean up after yourself bestie, it's main character behavior π
π₯ SEE ALSO π₯
okay this section is long and i am obsessed with it. the source of all this lore is the kernel file ./kernel/sched/ext/ext.c, and it wants you to also go read all of these β¨ (yes, all 90 of them, i counted, don't @ me):
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_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)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)
like, that's a whole reading list. study up queen ππ
ngl the whole page is basically three lines of actual content and then a wall of friends. but that's fine, that's the vibe, and every single one of them is here π«Ά
and that's the tea π this lil page lives in ./kernel/sched/ext and it's dated October 2026 β so mark your calendar bestie, the destroy-iterator era is upon us πβ¨ ily, go clean up your iterators π
π¦ 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