summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/bufq.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man9/bufq.9 3.html')
-rw-r--r--static/netbsd/man9/bufq.9 3.html211
1 files changed, 0 insertions, 211 deletions
diff --git a/static/netbsd/man9/bufq.9 3.html b/static/netbsd/man9/bufq.9 3.html
deleted file mode 100644
index c02fc983..00000000
--- a/static/netbsd/man9/bufq.9 3.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">BUFQ(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">BUFQ(9)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">bufq</code>, <code class="Nm">bufq_init</code>,
- <code class="Nm">bufq_register</code>,
- <code class="Nm">bufq_unregister</code>, <code class="Nm">bufq_state</code>,
- <code class="Nm">bufq_alloc</code>, <code class="Nm">bufq_drain</code>,
- <code class="Nm">bufq_free</code>,
- <code class="Nm">bufq_getstrategyname</code>,
- <code class="Nm">bufq_move</code>, <code class="Nm">bufq_put</code>,
- <code class="Nm">bufq_get</code>, <code class="Nm">bufq_peek</code>,
- <code class="Nm">bufq_cancel</code> &#x2014; <span class="Nd">device buffer
- queues</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><code class="In">#include
- &lt;<a class="In">sys/bufq.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bufq_init</code>(<var class="Fa" style="white-space: nowrap;">void</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">bufq_register</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_strat *</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">bufq_unregister</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_strat *</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">bufq_alloc</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state **bufq</var>, <var class="Fa" style="white-space: nowrap;">const
- char *strategy</var>, <var class="Fa" style="white-space: nowrap;">int
- flags</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bufq_drain</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bufq_free</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>);</p>
-<p class="Pp"><var class="Ft">const char *</var>
- <br/>
- <code class="Fn">bufq_getstrategyname</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bufq_move</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *dst</var>, <var class="Fa" style="white-space: nowrap;">struct
- bufq_state *src</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">bufq_put</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>, <var class="Fa" style="white-space: nowrap;">struct
- buf *bp</var>);</p>
-<p class="Pp"><var class="Ft">struct buf *</var>
- <br/>
- <code class="Fn">bufq_get</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>);</p>
-<p class="Pp"><var class="Ft">struct buf *</var>
- <br/>
- <code class="Fn">bufq_peek</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>);</p>
-<p class="Pp"><var class="Ft">struct buf *</var>
- <br/>
- <code class="Fn">bufq_cancel</code>(<var class="Fa" style="white-space: nowrap;">struct
- bufq_state *bufq</var>, <var class="Fa" style="white-space: nowrap;">struct
- buf *bp</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <code class="Nm">bufq</code> subsystem is a set of operations
- for the management of device buffer queues. Various strategies for ordering
- of entries in the buffer queues can be provided by loadable kernel modules
- (see <a class="Xr">module(9)</a>). By default, the
- <code class="Dv">BUFQ_FCFS</code> and <code class="Dv">BUFQ_DISKSORT</code>
- strategies are included in the kernel; see <a class="Xr">options(4)</a> for
- more details.</p>
-<p class="Pp" id="bufq_strat">The primary data type for using the operations is
- the <i class="Em">bufq_state</i> structure, which is opaque for users. Each
- buffer queue strategy module is defined by the
- <a class="permalink" href="#bufq_strat"><i class="Em">bufq_strat</i></a>
- structure, which is also opaque for users.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="FUNCTIONS"><a class="permalink" href="#FUNCTIONS">FUNCTIONS</a></h1>
-<dl class="Bl-tag">
- <dt id="bufq_init"><a class="permalink" href="#bufq_init"><code class="Fn">bufq_init</code></a>(<var class="Fa">void</var>)</dt>
- <dd>Initialize the <code class="Nm">bufq</code> subsystem. This routine must
- be called before any other <code class="Nm">bufq</code> routines.</dd>
- <dt id="bufq_register"><a class="permalink" href="#bufq_register"><code class="Fn">bufq_register</code></a>(<var class="Fa">bs</var>)</dt>
- <dd>Registers the specified buffer queue strategy module so it can be used in
- subsequent operations.</dd>
- <dt id="bufq_unregister"><a class="permalink" href="#bufq_unregister"><code class="Fn">bufq_unregister</code></a>(<var class="Fa">bs</var>)</dt>
- <dd>Unregisters the specified buffer queue strategy module. The routine will
- fail if any buffer queues for the specified strategy are in use (see
- <code class="Fn">bufq_alloc</code>() below).</dd>
- <dt><code class="Fn">bufq_alloc</code>(<var class="Fa">bufq</var>,
- <var class="Fa">strategy</var>, <var class="Fa">flags</var>)</dt>
- <dd>Allocate and initialize a <i class="Em">bufq_state</i> descriptor.
- <p class="Pp">The argument <var class="Fa">strategy</var> specifies a buffer
- queue strategy to be used for this buffer queue. The following special
- values can be used:</p>
- <p class="Pp"></p>
- <div class="Bd-indent">
- <dl class="Bl-tag Bl-compact">
- <dt id="BUFQ_STRAT_ANY"><a class="permalink" href="#BUFQ_STRAT_ANY"><code class="Dv">BUFQ_STRAT_ANY</code></a></dt>
- <dd>Let
- <a class="permalink" href="#bufq_alloc"><code class="Fn" id="bufq_alloc">bufq_alloc</code></a>()
- select a strategy.</dd>
- <dt id="BUFQ_DISK_DEFAULT_STRAT"><a class="permalink" href="#BUFQ_DISK_DEFAULT_STRAT"><code class="Dv">BUFQ_DISK_DEFAULT_STRAT</code></a></dt>
- <dd>Let <code class="Fn">bufq_alloc</code>() select a strategy, assuming
- it will be used for a normal disk device.</dd>
- </dl>
- </div>
- <p class="Pp">Valid bits for the <var class="Fa">flags</var> are:</p>
- <p class="Pp"></p>
- <div class="Bd-indent">
- <dl class="Bl-tag Bl-compact">
- <dt id="BUFQ_SORT_RAWBLOCK"><a class="permalink" href="#BUFQ_SORT_RAWBLOCK"><code class="Dv">BUFQ_SORT_RAWBLOCK</code></a></dt>
- <dd>sort by <i class="Em">b_rawblkno</i></dd>
- <dt id="BUFQ_SORT_CYLINDER"><a class="permalink" href="#BUFQ_SORT_CYLINDER"><code class="Dv">BUFQ_SORT_CYLINDER</code></a></dt>
- <dd>sort by
- <a class="permalink" href="#b_cylinder"><i class="Em" id="b_cylinder">b_cylinder</i></a>
- and then by <i class="Em">b_rawblkno</i></dd>
- <dt id="BUFQ_EXACT"><a class="permalink" href="#BUFQ_EXACT"><code class="Dv">BUFQ_EXACT</code></a></dt>
- <dd>Fail if a strategy specified by <var class="Fa">strategy</var> is not
- available. In that case, <var class="Fa">bufq_alloc</var> returns
- <code class="Dv">ENOENT</code>. If this flag is not specified,
- <a class="permalink" href="#bufq_alloc~2"><code class="Fn" id="bufq_alloc~2">bufq_alloc</code></a>()
- will silently use one of available strategies.</dd>
- </dl>
- </div>
- <p class="Pp">If a specific strategy is specified but not currently
- available, the <code class="Nm">bufq</code> subsystem will attempt to
- auto-load the corresponding kernel module using
- <a class="Xr">module_autoload(9)</a>.</p>
- </dd>
- <dt id="bufq_drain"><a class="permalink" href="#bufq_drain"><code class="Fn">bufq_drain</code></a>(<var class="Fa">bufq</var>)</dt>
- <dd>Drain a <i class="Em">bufq_state</i> descriptor.</dd>
- <dt id="bufq_free"><a class="permalink" href="#bufq_free"><code class="Fn">bufq_free</code></a>(<var class="Fa">bufq</var>)</dt>
- <dd>Destroy a <i class="Em">bufq_state</i> descriptor.</dd>
- <dt id="bufq_getstrategyname"><a class="permalink" href="#bufq_getstrategyname"><code class="Fn">bufq_getstrategyname</code></a>(<var class="Fa">bufq</var>)</dt>
- <dd>Get a strategy identifier of a buffer queue, the string returned will be
- NUL-terminated and it always will be a valid strategy name.</dd>
- <dt id="bufq_move"><a class="permalink" href="#bufq_move"><code class="Fn">bufq_move</code></a>(<var class="Fa">dst</var>,
- <var class="Fa">src</var>)</dt>
- <dd>Move all requests from the buffer queue <var class="Fa">src</var> to the
- buffer queue <var class="Fa">dst</var>.</dd>
- <dt id="bufq_put"><a class="permalink" href="#bufq_put"><code class="Fn">bufq_put</code></a>(<var class="Fa">bufq</var>,
- <var class="Fa">bp</var>)</dt>
- <dd>Put the buf <var class="Fa">bp</var> in the queue.</dd>
- <dt id="bufq_get"><a class="permalink" href="#bufq_get"><code class="Fn">bufq_get</code></a>(<var class="Fa">bufq</var>)</dt>
- <dd>Get the next buf from the queue and remove it from the queue. Returns
- <code class="Dv">NULL</code> if the queue is empty.</dd>
- <dt id="bufq_peek"><a class="permalink" href="#bufq_peek"><code class="Fn">bufq_peek</code></a>(<var class="Fa">bufq</var>)</dt>
- <dd>Get the next buf from the queue without removal. The next buf will remain
- the same until <code class="Fn">bufq_get</code>(),
- <code class="Fn">bufq_put</code>(), or
- <code class="Fn">bufq_drain</code>() is called. Returns
- <code class="Dv">NULL</code> if the queue is empty.</dd>
- <dt id="bufq_cancel"><a class="permalink" href="#bufq_cancel"><code class="Fn">bufq_cancel</code></a>(<var class="Fa">bufq</var>,
- <var class="Fa">bp</var>)</dt>
- <dd>Cancel the buf <var class="Fa">bp</var> issued earlier on the queue.
- Returns <code class="Dv">NULL</code> if the element can not be found on
- the queue or <var class="Fa">bp</var> if it has been found and removed.
- This operation can be computationally expensive if there are a lot of
- buffers queued.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="CODE_REFERENCES"><a class="permalink" href="#CODE_REFERENCES">CODE
- REFERENCES</a></h1>
-<p class="Pp">The actual code implementing the device buffer queues can be found
- in the file <span class="Pa">sys/kern/subr_bufq.c</span>. The code
- implementing specific buffer queue strategies can be found in the files
- <span class="Pa">sys/kern/bufq_*.c</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
-<p class="Pp">A list of currently available buffer queue strategies is available
- via the &#x201C;kern.bufq.strategies&#x201D; <a class="Xr">sysctl(7)</a>
- variables.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">bufq</code> subsystem appeared in
- <span class="Ux">NetBSD 2.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <code class="Nm">bufq</code> subsystem was written by
- <span class="An">J&#x00FC;rgen Hannken-Illjes</span>
- &#x27E8;hannken@NetBSD.org&#x27E9;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">November 17, 2016</td>
- <td class="foot-os">NetBSD 10.1</td>
- </tr>
-</table>