Module Name: src Committed By: pgoyette Date: Thu Nov 17 01:16:27 UTC 2016
Modified Files: src/share/man/man9: bufq.9 Log Message: Update bufq man page for new functions, with appropriate cross-refs to sysctl(7) and module(9). To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/share/man/man9/bufq.9 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man9/bufq.9 diff -u src/share/man/man9/bufq.9:1.20 src/share/man/man9/bufq.9:1.21 --- src/share/man/man9/bufq.9:1.20 Sun Apr 12 19:00:56 2009 +++ src/share/man/man9/bufq.9 Thu Nov 17 01:16:27 2016 @@ -1,4 +1,4 @@ -.\" $NetBSD: bufq.9,v 1.20 2009/04/12 19:00:56 joerg Exp $ +.\" $NetBSD: bufq.9,v 1.21 2016/11/17 01:16:27 pgoyette Exp $ .\" .\" Copyright (c) 2002 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -27,11 +27,14 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd January 24, 2009 +.Dd November 17, 2016 .Dt BUFQ 9 .Os .Sh NAME .Nm bufq , +.Nm bufq_init , +.Nm bufq_register , +.Nm bufq_unregister , .Nm bufq_state , .Nm bufq_alloc , .Nm bufq_drain , @@ -45,6 +48,12 @@ .Nd device buffer queues .Sh SYNOPSIS .In sys/bufq.h +.Ft void +.Fn bufq_init "void" +.Ft int +.Fn bufq_register "struct bufq_strat *" +.Ft int +.Fn bufq_unregister "struct bufq_strat *" .Ft int .Fn bufq_alloc "struct bufq_state **bufq" "const char *strategy" "int flags" .Ft void @@ -67,12 +76,38 @@ The .Nm 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 +.Xr module 9 ) . +By default, the BUFQ_FCFS and BUFQ_DISKSORT strategies are included in +the kernel; see +.Xr options 4 +for more details. .Pp The primary data type for using the operations is the .Em bufq_state structure, which is opaque for users. +Each buffer queue strategy module is defined by the +.Em bufq_strat +structure, which is also opaque for users. .Sh FUNCTIONS .Bl -tag -width compact +.It Fn bufq_init "void" +Initialize the +.Nm +subsystem. +This routine must be called before any other +.Nm +routines. +.It Fn bufq_register "bs" +Registers the specified buffer queue strategy module so it can be used +in subsequent operations. +.It Fn bufq_unregister "bs" +Unregisters the specified buffer queue strategy module. +The routine will fail if any buffer queues for the specified strategy +are in use (see +.Fn bufq_alloc +below). .It Fn bufq_alloc "bufq" "strategy" "flags" Allocate and initialize a .Em bufq_state @@ -119,6 +154,11 @@ If this flag is not specified, .Fn bufq_alloc will silently use one of available strategies. .El +.Pp +If a specific strategy is specified but not currently available, the +.Nm bufq +subsystem will attempt to auto-load the corresponding kernel module using +.Xr module_autoload 9 . .It Fn bufq_drain "bufq" Drain a .Em bufq_state @@ -172,6 +212,15 @@ a lot of buffers queued. The actual code implementing the device buffer queues can be found in the file .Pa sys/kern/subr_bufq.c . +The code implementing specific buffer queue strategies can be found in +the files +.Pa sys/kern/bufq_*.c . +.Sh NOTES +A list of currently available buffer queue strategies is available via +the +.Dq kern.bufq.strategies +.Xr sysctl 7 +variables. .Sh HISTORY The .Nm