get_unbound_pool(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… get_unbound_pool(9)

okay so real talk, bestie β€” welcome to the Kernel API Manual, page get_unbound_pool(9). this is a kernel function, section 9, and we're gonna get you comfy with it ✨


🌸 NAME

get_unbound_pool β€” get a worker_pool with the specified attributes. that's it, that's the whole vibe. it fetches you a pool, no cap 🫢


πŸ¦‹ SYNOPSIS

struct worker_pool * get_unbound_pool (const struct workqueue_attrs
*attrs );

literally the exact signature, don't @ me, type it right πŸ’…


πŸŽ€ ARGUMENTS

  • attrs β€” the attributes of the worker_pool to get. think of it as your wishlist: you hand over the specs, and this thing goes looking for a pool that matches. ✨

πŸ’– DESCRIPTION

so here's what happens, and it's actually so straightforward:

Obtain a worker_pool which has the same attributes as attrs, bump the reference count and return it. πŸ”₯

If there already is a matching worker_pool, it will be used β€” like, no need to build a whole new one, we're being efficient bestie, we're reusing. otherwise, this function attempts to create a new one. main character energy on both paths ngl πŸ’…

⚠️ okay this part is important, do NOT skip it: should be called with wq_pool_mutex held. like, hold the lock. for real. this isn't a vibe check you can just skip πŸ™ˆ β€” the manual says it, so we say it.

πŸ‘‘ RETURN

  • On success: a worker_pool with the same attributes as attrs. slay. πŸŽ‰
  • On failure: NULL. 😭 that's the sad ending, check it before you dereference it, i'm begging.

🧚 SEE ALSO

okay this is the part where the manpage absolutely ATE β€” it's a whole friend group, a whole roster, a whole group chat of related functions. every single one, here we go, no skipping, i promised πŸ‘‡

Kernel file ./kernel/workqueue.c plus:

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),
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… that's the whole friend group fr fr, go read them all, iykyk πŸ¦‹πŸ’œ


and that's the page!! mwah πŸ’‹ sourced straight from ./kernel, dated October 2026, living in the Kernel API Manual as get_unbound_pool(9) β€” thanks for reading bestie, go hold that mutex 🫢✨

πŸ“¦ where this page comes from