disable_work(9)
π disable_work β Kernel API Manual β¨
okay bestie, buckle up, because today we're talking about disable_work(9) β the kernel workqueue function that says "nope, not right now" to a work item π
πΈ NAME πΈ
disable_work β Disable and cancel a work item, fr fr π
β¨ SYNOPSIS β¨
bool disable_work (struct work_struct *work );
like, that's the whole signature. short and iconic π
π«Ά ARGUMENTS π«Ά
workβ the work item you wanna disable. that's it, that's the vibe π¦
π DESCRIPTION π
so here's the tea β β disable_work disables your work by incrementing its disable count, and it also cancels that work if it's currently pending. like, it's not just sitting there pretending, it actually goes and cancels it. main character energy π₯
and because the disable count is now non-zero, any attempt to queue that work will fail and return false. periodt. no queueing, no vibes, nothing π
the maximum supported disable depth is 2 to the power of WORK_OFFQ_DISABLE_BITS, which is currently 65536. highkey a big number, don't push your luck bestie π
you can call this from any context β literally any. and it returns true if the work was pending, false otherwise. easy β
π SEE ALSO π
okay this list is LONG but we respect the lore. all of these live in the kernel file ./kernel/workqueue.c β go read it, iykyk:
for_each_pool(9),for_each_pool_worker(9),for_each_pwq(9),worker_pool_assign_id(9)unbound_effective_cpumask(9),get_work_pool(9)worker_set_flags(9),worker_clr_flags(9),worker_enter_idle(9),worker_leave_idle(9)find_worker_executing_work(9),move_linked_works(9),assign_work(9)kick_pool_pick(9),kick_pool(9)wq_worker_running(9),wq_worker_sleeping(9),wq_worker_tick(9),wq_worker_last_func(9)wq_node_nr_active(9),wq_update_node_max_active(9)get_pwq(9),put_pwq(9),put_pwq_unlocked(9)pwq_tryinc_nr_active(9),pwq_activate_first_inactive(9),unplug_oldest_pwq(9),node_activate_pending_pwq(9)pwq_dec_nr_active(9),pwq_dec_nr_in_flight(9)try_to_grab_pending(9),work_grab_pending(9)insert_work(9),queue_work_on(9),select_numa_node_cpu(9),queue_work_node(9)queue_delayed_work_on(9),mod_delayed_work_on(9),queue_rcu_work(9)worker_attach_to_pool(9),worker_detach_from_pool(9),create_worker(9),set_worker_dying(9)idle_worker_timeout(9),idle_cull_fn(9),maybe_create_worker(9),manage_workers(9)process_one_work(9),process_scheduled_works(9),worker_thread(9),rescuer_thread(9)check_flush_dependency(9),insert_wq_barrier(9),flush_workqueue_prep_pwqs(9),__flush_workqueue(9),drain_workqueue(9)flush_work(9),flush_delayed_work(9),flush_rcu_work(9)cancel_work_sync(9),cancel_delayed_work(9),cancel_delayed_work_sync(9)disable_work_sync(9),enable_work(9),disable_delayed_work(9),disable_delayed_work_sync(9),enable_delayed_work(9)schedule_on_each_cpu(9),execute_in_process_context(9)free_workqueue_attrs(9),alloc_workqueue_attrs(9)init_worker_pool(9),put_unbound_pool(9),get_unbound_pool(9)wq_calc_pod_cpumask(9),apply_workqueue_attrs(9),unbound_wq_update_pwq(9),wq_adjust_max_active(9)destroy_workqueue(9),workqueue_set_max_active(9),workqueue_set_min_active(9)current_work(9),current_is_workqueue_rescuer(9),current_is_workqueue_mem_reclaim(9)workqueue_congested(9),work_busy(9)set_worker_desc(9),print_worker_info(9)show_one_workqueue(9),show_one_worker_pool(9),show_all_workqueues(9),show_freezable_workqueues(9)rebind_workers(9),restore_unbound_workers_cpumask(9)work_on_cpu_key(9)freeze_workqueues_begin(9),freeze_workqueues_busy(9),thaw_workqueues(9)workqueue_unbound_housekeeping_update(9),workqueue_set_unbound_cpumask(9)workqueue_sysfs_register(9),workqueue_sysfs_unregister(9)workqueue_init_early(9),workqueue_init(9)llc_count_cores(9),llc_populate_cpu_shard_id(9),precompute_cache_shard_ids(9),workqueue_init_topology(9)
that's the whole page bestie, no cap. this one came out of ./kernel and it's dated October 2026 β so like, from the future?? we love a timeless queen π§π bye!! π
π¦ 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