diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index bbfe7df712af..1508aad7435a 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1,9 +1,9 @@ -# $Id: Makefile,v 1.24 1997/03/22 20:06:58 mpp Exp $ +# $Id: Makefile,v 1.25 1997/03/22 20:59:15 mpp Exp $ MAN9= MD5.9 at_shutdown.9 at_fork.9 at_exit.9 boot.9 cd.9 copy.9 \ devfs_add_devswf.9 \ devfs_link.9 fetch.9 ifnet.9 intro.9 inittodr.9 mi_switch.9 \ - panic.9 psignal.9 \ + panic.9 physio.9 psignal.9 \ resettodr.9 rtalloc.9 rtentry.9 scsiconf.9 sd.9 sleep.9 spl.9 st.9 \ store.9 style.9 time.9 timeout.9 uio.9 \ vnode.9 vget.9 vput.9 vref.9 vrele.9 VOP_ABORTOP.9 VOP_ACCESS.9 \ diff --git a/share/man/man9/physio.9 b/share/man/man9/physio.9 new file mode 100644 index 000000000000..0a633792108d --- /dev/null +++ b/share/man/man9/physio.9 @@ -0,0 +1,137 @@ +.\" $NetBSD: physio.9,v 1.2 1996/11/11 00:05:12 lukem Exp $ +.\" +.\" Copyright (c) 1996 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Paul Kranenburg. +.\" +.\" 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. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the NetBSD +.\" Foundation, Inc. and its contributors. +.\" 4. Neither the name of The NetBSD Foundation nor the names of its +.\" contributors may be used to endorse or promote products derived +.\" from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 REGENTS 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 June 15, 1996 +.Dt PHYSIO 9 +.Os FreeBSD +.Sh NAME +.Nm physio +.Nd initiate I/O on raw devices +.Sh SYNOPSIS +.Ft int +.Fo "physio" +.Fa "(*strategy)(struct buf *)" +.Fa "struct buf *bp" +.Fa "dev_t dev" +.Fa "int flags" +.Fa "(*minphys)(struct buf *)" +.Fa "struct uio *uio" +.Fc +.Sh DESCRIPTION +The +.Fn physio +is a helper function typically called from character device read and write +routines to start I/O on a user process buffer. It calls back on the +provided +.Fa strategy +routine one or more times to complete the transfer described by +.Fa uio . +The maximum amount of data to transfer with each call to +.Fa strategy +is determined by the +.Fa minphys +routine. Since +.Fa uio +normally describes user space addresses, +.Fn physio +needs to lock the process into memory. This is done by setting the +.Dv P_PHYSIO +flag on the process. +.Fn physio +always awaits the completion of the entire requested transfer before +returning, unless an error condition is detected earlier. In all cases, +the buffer passed in +.Fa bp +is locked (marked as +.Dq busy ) +for the duration of the entire transfer. +.Pp +A break-down of the arguments follows: +.Bl -tag -width indent +.It Fa strategy +The device strategy routine to call for each chunk of data to initiate +device I/O. +.It Fa bp +The buffer to use with the strategy routine. The buffer flags will have +.Dv B_BUSY , +and +.Dv B_PHYS +set when passed to the strategy routine. If +.Dv NULL , +a buffer is allocated from a system pool. +.It Fa dev +The device number identifying the device to interact with. +.It Fa flags +Direction of transfer; the only valid settings are +.Dv B_READ +or +.Dv B_WRITE . +.It Fa minphys +A device specific routine called to determine the maximum transfer size +that the device's strategy routine can handle. +.It Fa uio +The description of the entire transfer as requested by the user process. +Currently, the results of passing a +.Fa uio +structure with the +.Sq uio_segflg +set to anything other than +.Dv UIO_USERSPACE , +are undefined. +.El +.Pp +.Sh RETURN VALUES +If successful +.Fn physio +returns 0. +.Er EFAULT +is returned if the address range described by +.Fa uio +is not accessible by the requesting process. +.Fn physio +will return any error resulting from calls to the device strategy routine, +by examining the +.Dv B_ERROR +buffer flag and the +.Va b_error +field. Note that the actual transfer size may be less than requested by +.Fa uio +if the device signals an +.Dq end of file +condition. +.Sh SEE ALSO +.Xr read 2 , +.Xr write 2