diff options
Diffstat (limited to 'static/netbsd/man9/bufq.9 3.html')
| -rw-r--r-- | static/netbsd/man9/bufq.9 3.html | 211 |
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> — <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 - <<a class="In">sys/bufq.h</a>></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 “kern.bufq.strategies” <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ürgen Hannken-Illjes</span> - ⟨hannken@NetBSD.org⟩.</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> |
