get_work_pool(9)
π get_work_pool(9) β Kernel API Manual π
This little icon lives in the Kernel API Manual, and she is here to help you find the worker_pool a work item was associated with. Periodt. π¦
β¨ NAME β¨
get_work_pool β return the worker_pool a given work was associated with. No cap, that's literally her whole job. π
π SYNOPSIS π
struct worker_pool * get_work_pool (struct work_struct *work );
π¦ ARGUMENTS π¦
workβ the work item of interest, aka the lil work thing you're curious about. π«Ά
πΈ DESCRIPTION πΈ
Okay so pools are created and destroyed under wq_pool_mutex, and read access is allowed under the RCU read lock. Because of that, this function should be called under wq_pool_mutex or inside of a rcu_read_lock region. Locking check, bestie β do not skip it. π
All fields of the returned pool are accessible as long as the above mentioned locking is in effect. Every field. Fair game. Accessible. But if the returned pool needs to be used beyond the critical section, the caller is responsible for ensuring the returned pool is and stays online. That means you, bestie β you gotta keep that pool alive and online if you're taking it past the critical section. π₯
Locking is the vibe check here: call this underwq_pool_mutexor inside arcu_read_lockregion. If you need the pool after the critical section, keeping it online is on you. π
π₯ RETURN π₯
The worker_pool that work was last associated with. NULL if none β literally no pool, no vibe. π
π SEE ALSO π
Kernel file ./kernel/workqueue.c and the whole extended friend group, copy these exactly bestie:
./kernel/workqueue.cfor_each_pool(9)for_each_pool_worker(9)for_each_pwq(9)worker_pool_assign_id(9)unbound_effective_cpumask(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)workqueue_init_topology(9)
Source/version: ./kernel Β· date: October 2026 Β· page: get_work_pool(9). That's the whole footer, bestie β love u, 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