show_freezable_workqueues(9)
π show_freezable_workqueues(9) β kernel API manual, but make it make sense
okay so this is a page from the Kernel API Manual, bestie, and the star of the show is show_freezable_workqueues(9). It's a tiny little function with a big job and honestly it's giving "background character who saves the entire plot" energy. Let's get into it π«Ά
β¨ NAME β¨
show_freezable_workqueues β dump freezable workqueue state π
Like, it literally dumps the state. That's the whole thing. No cap.
πΈ SYNOPSIS πΈ
void show_freezable_workqueues (void );
Yup. That's it. That's the whole signature. She takes nothing and she gives you everything (well, she gives you a dump, but still) β¨
π ARGUMENTS π
voidβ no arguments
Literally zero arguments. She doesn't want your input, she doesn't need your input, she's booked and busy π
π¦ DESCRIPTION π¦
So here's the tea π₯: this function gets called from try_to_freeze_tasks, and what it does is print out all the freezable workqueues that are still busy.
That's it. That's the whole vibe. Someone's trying to freeze tasks, this function rolls up, checks which freezable workqueues are still out here doing stuff, and prints them all out so you can see exactly who's not reading the room π
ngl, if you're debugging a freeze that's hanging, this is the friend who tells you who is still awake at the sleepover. iconic behaviour, honestly π
β SEE ALSO β
The kernel file ./kernel/workqueue.c β and bestie, the crossover list here is enormous, she's connected to literally everyone in the workqueue.c friend group π go read up on all of these:
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(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)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, the way this one tiny function is adjacent to the entire workqueue source file is genuinely wild to me π she knows everyone, she's at every party, she's everybody's bestie.
and that's the page, bestie! π§ this one came from the ./kernel corner of the world, dated October 2026 β mwah, sending you love and a freeze-free kernel ππβ¨
π¦ 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