nldsq_cursor_lost_task(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… nldsq_cursor_lost_task ✨

okay so this is a page straight out of the Kernel API Manual bestie, and it's giving "did somebody steal my task while I wasn't looking" energy. iconic question, honestly.

🌸 NAME 🌸

nldsq_cursor_lost_task β€” literally just checks whether somebody else swiped the task while you were out here iterating 🫢


πŸŽ€ SYNOPSIS πŸŽ€

bool nldsq_cursor_lost_task (struct scx_dsq_list_node *cursor , struct
rq *rq , struct scx_dispatch_q *dsq , struct task_struct *p );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • cursor β€” an scx_dsq_list_node that you set up with INIT_DSQ_LIST_CURSOR ✨
  • rq β€” the rq that p was chillin' on
  • dsq β€” the dsq that p was chillin' on
  • p β€” the target task, the main character of this whole situation πŸ‘‘

πŸ’œ DESCRIPTION πŸ’œ

So p is a task you got back from nldsq_cursor_next_task. Fabulous. But here's the thing β€” the locks may have been dropped and re-acquired inbetween 😭 which means the world may have moved on without you. This function verifies that no one else took p, or is in the process of taking p, from dsq. no cap, it's a vibe check for task ownership.

On false return, the caller can assume full ownership of p. periodt. it's yours, go off πŸ’…

ngl bestie, that "locks may have been dropped and re-acquired inbetween" line is the whole plot β€” don't skip it, that's the entire reason this function exists πŸ™ˆ

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./kernel/sched/ext/ext.c β€” and here's the whole friend group, every single one, no one left behind 🫢:

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), 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), 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 page bestie, mwah πŸ’‹ this little icon lives over in ./kernel/sched/ext, dated October 2026, and it signs off as nldsq_cursor_lost_task(9) πŸŽ€ go check if your task got stolen, love u, bye πŸ¦‹

πŸ“¦ where this page comes from