__flush_workqueue(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… __flush_workqueue β€” kernel API manual, but make it make sense

okay bestie, so this one's from the kernel API manual (section 9, the kernel dev girlies know 🫢). Let me put you on.


✨ NAME ✨

__flush_workqueue β€” gonna make sure that any scheduled work has actually run all the way to completion. like, fully done. no half-finished vibes. πŸ’…


🌸 SYNOPSIS 🌸

void __flush_workqueue (struct workqueue_struct *wq );

that's it. that's the whole signature. clean, iconic, no cap. ✨


πŸŽ€ ARGUMENTS πŸŽ€

  • wq β€” the workqueue you wanna flush. that's the one, bestie. that's who we're waiting on.

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so here's the tea 🍡 β€” this function sleeps 😴 until all the work items that were already queued on entry have finished execution. like, whatever was in the queue when you walked in the door? it's getting done before this returns. periodt.

but β€” and this is the cute part β€” it is not livelocked by new incoming ones. so if new work keeps showing up while you're waiting, it doesn't get stuck forever chasing them. it's only committed to the ones that were there at the start. main character energy, honestly. πŸ‘‘


πŸ‘‘ SEE ALSO πŸ‘‘

like, the whole extended friend group fr fr. also peep the kernel file ./kernel/workqueue.c πŸ’–

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), 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)


and that's the whole page, bestie, we ate and left no crumbs πŸ“βœ¨ this diva lives in ./kernel and the version tag says October 2026 β€” so go flush that queue and slay, ily!! πŸ’œπŸŽ€πŸ¦‹

πŸ“¦ where this page comes from