mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-12-24 10:52:36 +01:00
Add physio(9).
Obtained from: NetBSD w/minor FreeBSD changes
This commit is contained in:
parent
b6c4b1903b
commit
4b2502a3e8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=24119
@ -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 \
|
||||
|
137
share/man/man9/physio.9
Normal file
137
share/man/man9/physio.9
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user