worker_thread(9)
πΈ worker_thread (9) β the Kernel API Manual, bestie edition πΈ
okay so welcome to the Kernel API Manual, section 9, and today's main character is worker_thread β the worker thread function itself, like, the actual function your kernel's worker threads run. she's booked, she's busy, she's processing everything. let's get into it π
β¨ NAME β¨
worker_thread β the worker thread function. that's it, that's the whole vibe. she's the function, she's the thread, she's everything π
π¦ SYNOPSIS π¦
int worker_thread (void *__worker );
literally just one argument. no cap, that's the whole signature. keep it exactly like that, spaces and all, because kernel headers are picky like that π
π ARGUMENTS π
__workerβ self. that's it. that's the whole description. she's passing herself in. main character energy fr fr π
πΈ DESCRIPTION πΈ
okay so the tea β: this is the worker thread function. all workers belong to a worker_pool β either a per-cpu one or a dynamic unbound one. periodt.
these workers process all work items regardless of their specific target workqueue. like, they don't care which workqueue the item was destined for, they just run it. iconic, unbothered, moisturised π
the only exception? work items which belong to workqueues with a rescuer. that whole situation gets explained over in rescuer_thread, so if you're curious, that's where you go. iykyk π§
β RETURN β
0
that's it. zero. she returns zero. slay π«Ά
π SEE ALSO π
okay bestie, buckle up, this list is long β literally everyone in the workqueue cinematic universe is here π. they all live in the kernel file ./kernel/workqueue.c, and honestly? every single one of them deserves their own fan page:
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)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(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)
like i said. everyone. the whole friend group ππ
and that's the page!! hope you had fun, hope you learned something, hope you go read rescuer_thread next because she's lowkey the plot twist π¦
this lil masterpiece came from the source ./kernel, version dated October 2026 β mwah, she's fresh, she's stamped, she's iconic β¨π
π¦ 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