summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/workqueue.9
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 15:32:58 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 15:32:58 -0400
commit5cb84ec742fd33f78c8022863fadaa8d0d93e176 (patch)
tree1a81ca3665e6153923e40db7b0d988f8573ab59c /static/netbsd/man9/workqueue.9
parenta59214f344567c037d5776879bcfc5fcc1d4d5f6 (diff)
feat: Added NetBSD man pages
Diffstat (limited to 'static/netbsd/man9/workqueue.9')
-rw-r--r--static/netbsd/man9/workqueue.9163
1 files changed, 163 insertions, 0 deletions
diff --git a/static/netbsd/man9/workqueue.9 b/static/netbsd/man9/workqueue.9
new file mode 100644
index 00000000..39fbe7c5
--- /dev/null
+++ b/static/netbsd/man9/workqueue.9
@@ -0,0 +1,163 @@
+.\" $NetBSD: workqueue.9,v 1.15 2020/09/08 17:02:18 riastradh Exp $
+.\"
+.\" Copyright (c)2005 YAMAMOTO Takashi,
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" ------------------------------------------------------------
+.Dd December 28, 2017
+.Dt WORKQUEUE 9
+.Os
+.\" ------------------------------------------------------------
+.Sh NAME
+.Nm workqueue
+.Nd simple do-it-in-thread-context framework
+.\" ------------------------------------------------------------
+.Sh SYNOPSIS
+.In sys/workqueue.h
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Ft int
+.Fn workqueue_create \
+"struct workqueue **wqp" "const char *name" \
+"void (*func)(struct work *, void *)" "void *arg" \
+"pri_t prio" "int ipl" "int flags"
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Ft void
+.Fn workqueue_enqueue \
+"struct workqueue *wq" "struct work *wk" "struct cpu_info *ci"
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Ft void
+.Fn workqueue_wait \
+"struct workqueue *wq" "struct work *wk"
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Ft void
+.Fn workqueue_destroy \
+"struct workqueue *wq"
+.\" ------------------------------------------------------------
+.Sh DESCRIPTION
+The
+.Nm
+utility routines are provided to defer work which is needed to be
+processed in a thread context.
+.Pp
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Fn workqueue_create
+creates a workqueue.
+It takes the following arguments:
+.Bl -tag -width flags
+.It Fa wqp
+Specify where to store the created workqueue.
+.It Fa name
+The name of the workqueue.
+.It Fa func
+The function to be called for each
+.Fa work .
+.It Fa arg
+An argument to be passed as a second argument of
+.Fa func .
+.It Fa prio
+The priority level for the worker threads.
+.It Fa ipl
+The highest IPL at which this workqueue is used.
+.It Fa flags
+The value of 0 indicates a standard create operation, however the following
+flags may be bitwise ORed together:
+.Bl -tag -width WQ_MPSAFE
+.It Dv WQ_FPU
+Specifies that the kthread must be allowed to use any machine-dependent
+per-CPU floating-point units or SIMD vector units, as in
+.Xr kthread_fpu_enter 9 / Xr kthread_fpu_exit 9 ,
+when it executes the worker function.
+.It Dv WQ_MPSAFE
+Specifies that the workqueue is multiprocessor safe and does its own locking;
+otherwise the kernel lock will be held while processing work.
+.It Dv WQ_PERCPU
+Specifies that the workqueue should have a separate queue for each CPU,
+thus the work could be enqueued on concrete CPUs.
+.El
+.El
+.Pp
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Fn workqueue_enqueue
+enqueues the work
+.Fa wk
+into the workqueue
+.Fa wq .
+.Pp
+If the
+.Dv WQ_PERCPU
+flag was set on workqueue creation, the
+.Fa ci
+argument may be used to specify the CPU on which the work should
+be enqueued.
+Also it may be
+.Dv NULL ,
+then work will be enqueued on the current CPU.
+If
+.Dv WQ_PERCPU
+flag was not set,
+.Fa ci
+must be
+.Dv NULL .
+.Pp
+The enqueued work will be processed in a thread context.
+A work must not be enqueued again until the callback is called by
+the
+.Nm
+framework.
+.Pp
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Fn workqueue_wait
+waits for a specified work
+.Fa wk
+on the workqueue
+.Fa wq
+to finish.
+The caller must ensure that
+.Fa wk
+will not be enqueued to the workqueue again until after
+.Fn workqueue_wait
+returns.
+.Pp
+.\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+.Fn workqueue_destroy
+destroys a workqueue and frees associated resources.
+The caller should ensure that the workqueue has no work enqueued beforehand.
+.\" ------------------------------------------------------------
+.Sh RETURN VALUES
+.Fn workqueue_create
+returns 0 on success.
+Otherwise, it returns an
+.Xr errno 2 .
+.\" ------------------------------------------------------------
+.Sh CODE REFERENCES
+The
+.Nm
+subsystem is implemented within the file
+.Pa sys/kern/subr_workqueue.c .
+.\" ------------------------------------------------------------
+.Sh SEE ALSO
+.Xr callout 9 ,
+.Xr condvar 9 ,
+.Xr kthread 9 ,
+.Xr softint 9