workqueue_init_topology(9)
β¨ workqueue_init_topology(9) β¨
okay so real talk β this is a page from the Kernel API Manual, and it's about workqueue_init_topology(9). it's short. it's lowkey iconic. let's go π
πΈ NAME πΈ
workqueue_init_topology β initialize CPU pods for unbound workqueues
like, it sets up the CPU pods. for the unbound workqueues. that's the whole vibe check π«Ά
π SYNOPSIS π
void workqueue_init_topology (void );
no cap, that's it. that's the whole signature. she takes nothing, she returns nothing, she simply is β¨
π¦ ARGUMENTS π¦
voidβ no arguments. zero. nada. the function said "i don't need input, i'm the main character" ππ
π DESCRIPTION π
okay so this is the third step of three in the whole three-staged workqueue subsystem initialization situation. step three of three. the finale. the last dance π©°
the way that it works is: it gets invoked after SMP and topology information are fully initialized. fully. completely. don't call it before that, bestie, it literally needs the topology data to exist first, iykyk.
once it's called, it initializes the unbound CPU pods accordingly. that's the assignment. that's what she does. pods. unbound ones. initialized. periodt π
ngl this is a "trust the process, it's step three of three" kind of function β the docs don't give you extra knobs or options, there aren't any. it just does its pod thing and dips.
π₯ SEE ALSO π₯
first up, the source of truth itself: Kernel file ./kernel/workqueue.c β go read it, it's giving lore π
and then, bestie, brace yourself, because this list is long. i'm not skipping a single one. every single friend of the family is here:
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)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)
like i said. every single one. ate and left no crumbs ππ
and that's the page, bestie!! π§ββοΈ huge shoutout to the source ./kernel and the date stamp October 2026 β and yeah, this whole thing lives under the Kernel API Manual umbrella, so you always know where to find her again. mwah ππ
π¦ 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