scx_task_iter_unlock(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ NAME πŸŽ€

okay so bestie, welcome to scx_task_iter_unlock(9) β€” that's the page name, and the manual it lives in is the Kernel API Manual, just so u know where we are πŸ’…. The actual ✨vibe✨ of this function? Unlock rq and scx_tasks_lock held by a task iterator. That's the whole name, no cap.


✨ SYNOPSIS ✨

void scx_task_iter_unlock (struct scx_task_iter *iter );

literally that's it. short king behavior πŸ‘‘


🫢 ARGUMENTS 🫢

  • iter β€” the iterator to unlock. like, the one u want to free up. hand it over πŸŽ€

πŸ’– DESCRIPTION πŸ’–

okay so picture this: iter is mid locked iteration πŸ‘€. that means it might be holding the rq of the task it's currently visiting, plus scx_tasks_lock. two locks. iconic, but also, we need them gone.

This function unlocks both of them. both!! πŸ¦‹

And here's the best part β€” you can safely call it anytime during an iteration. anytime!! no stress, no "wait am I allowed", none of that. then the very next iterator operation will automatically restore the necessary locking all on its own ✨. it's giving self-sufficient main character energy, fr fr.

ngl the "anytime" part is doing so much work here and it ate πŸ’…

πŸ‘‘ SEE ALSO πŸ‘‘

the full squad, in order, no one left behind 🫢 β€” and yes they all 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_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), 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)


okay that's the whole page bestie, hope u slayed πŸ’œ

🌸 little sign-off: this came from ./kernel/sched/ext (that's the source + version, iykyk), dated October 2026, and it's page scx_task_iter_unlock(9) in the Kernel API Manual. mwah πŸ«Άβœ¨πŸŽ€

πŸ“¦ where this page comes from