xref: /freebsd/share/man/man9/physio.9 (revision c0854fb7b271bc41ecee43bf0a295a72a1fee859)
14b2502a3SMike Pritchard.\"	$NetBSD: physio.9,v 1.2 1996/11/11 00:05:12 lukem Exp $
24b2502a3SMike Pritchard.\"
34b2502a3SMike Pritchard.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
44b2502a3SMike Pritchard.\" All rights reserved.
54b2502a3SMike Pritchard.\"
64b2502a3SMike Pritchard.\" This code is derived from software contributed to The NetBSD Foundation
74b2502a3SMike Pritchard.\" by Paul Kranenburg.
84b2502a3SMike Pritchard.\"
94b2502a3SMike Pritchard.\" Redistribution and use in source and binary forms, with or without
104b2502a3SMike Pritchard.\" modification, are permitted provided that the following conditions
114b2502a3SMike Pritchard.\" are met:
124b2502a3SMike Pritchard.\" 1. Redistributions of source code must retain the above copyright
134b2502a3SMike Pritchard.\"    notice, this list of conditions and the following disclaimer.
144b2502a3SMike Pritchard.\" 2. Redistributions in binary form must reproduce the above copyright
154b2502a3SMike Pritchard.\"    notice, this list of conditions and the following disclaimer in the
164b2502a3SMike Pritchard.\"    documentation and/or other materials provided with the distribution.
174b2502a3SMike Pritchard.\" 3. All advertising materials mentioning features or use of this software
184b2502a3SMike Pritchard.\"    must display the following acknowledgement:
194b2502a3SMike Pritchard.\"        This product includes software developed by the NetBSD
204b2502a3SMike Pritchard.\"        Foundation, Inc. and its contributors.
214b2502a3SMike Pritchard.\" 4. Neither the name of The NetBSD Foundation nor the names of its
224b2502a3SMike Pritchard.\"    contributors may be used to endorse or promote products derived
234b2502a3SMike Pritchard.\"    from this software without specific prior written permission.
244b2502a3SMike Pritchard.\"
254b2502a3SMike Pritchard.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
264b2502a3SMike Pritchard.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
274b2502a3SMike Pritchard.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
284b2502a3SMike Pritchard.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
294b2502a3SMike Pritchard.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
304b2502a3SMike Pritchard.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
314b2502a3SMike Pritchard.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
324b2502a3SMike Pritchard.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
334b2502a3SMike Pritchard.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
344b2502a3SMike Pritchard.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
354b2502a3SMike Pritchard.\" POSSIBILITY OF SUCH DAMAGE.
364b2502a3SMike Pritchard.\"
377f3dea24SPeter Wemm.\" $FreeBSD$
385bf6ab83SNik Clayton.\"
39cd4d01d8SWarner Losh.Dd July 8, 2004
404b2502a3SMike Pritchard.Dt PHYSIO 9
413d45e180SRuslan Ermilov.Os
424b2502a3SMike Pritchard.Sh NAME
434b2502a3SMike Pritchard.Nm physio
444b2502a3SMike Pritchard.Nd initiate I/O on raw devices
454b2502a3SMike Pritchard.Sh SYNOPSIS
4632eef9aeSRuslan Ermilov.In sys/param.h
4732eef9aeSRuslan Ermilov.In sys/systm.h
48f16b3c0dSChad David.In sys/bio.h
4932eef9aeSRuslan Ermilov.In sys/buf.h
504b2502a3SMike Pritchard.Ft int
515770fb13SBruce Evans.Fn physio "dev_t dev" "struct uio *uio" "int ioflag"
524b2502a3SMike Pritchard.Sh DESCRIPTION
534b2502a3SMike PritchardThe
544b2502a3SMike Pritchard.Fn physio
55b6acc60dSRuslan Ermilovis a helper function typically called from character device
56b6acc60dSRuslan Ermilov.Fn read
57b6acc60dSRuslan Ermilovand
58b6acc60dSRuslan Ermilov.Fn write
591111b49cSSheldon Hearnroutines to start I/O on a user process buffer.
60e1051231SJosef KarthauserThe maximum amount of data to transfer with each call
61b6acc60dSRuslan Ermilovis determined by
62b6acc60dSRuslan Ermilov.Fa dev->si_iosize_max .
63cd4d01d8SWarner LoshThe
64cd4d01d8SWarner Losh.Fn physio
65cd4d01d8SWarner Loshcall converts the I/O request into a
66cd4d01d8SWarner Losh.Fn strategy
67cd4d01d8SWarner Loshrequest and passes the new request to the driver's
68cd4d01d8SWarner Losh.Fn strategy
69cd4d01d8SWarner Loshroutine for processing.
70e1051231SJosef Karthauser.Pp
711111b49cSSheldon HearnSince
724b2502a3SMike Pritchard.Fa uio
734b2502a3SMike Pritchardnormally describes user space addresses,
744b2502a3SMike Pritchard.Fn physio
75c0854fb7SRuslan Ermilovneeds to lock those pages into memory.
76cd4d01d8SWarner LoshThis is done by calling
77cd4d01d8SWarner Losh.Fn vmapbuf
78cd4d01d8SWarner Loshfor the appropriate pages.
794b2502a3SMike Pritchard.Fn physio
804b2502a3SMike Pritchardalways awaits the completion of the entire requested transfer before
811111b49cSSheldon Hearnreturning, unless an error condition is detected earlier.
824b2502a3SMike Pritchard.Pp
834b2502a3SMike PritchardA break-down of the arguments follows:
844b2502a3SMike Pritchard.Bl -tag -width indent
854b2502a3SMike Pritchard.It Fa dev
864b2502a3SMike PritchardThe device number identifying the device to interact with.
874b2502a3SMike Pritchard.It Fa uio
884b2502a3SMike PritchardThe description of the entire transfer as requested by the user process.
894b2502a3SMike PritchardCurrently, the results of passing a
904b2502a3SMike Pritchard.Fa uio
914b2502a3SMike Pritchardstructure with the
92b6acc60dSRuslan Ermilov.Va uio_segflg
934b2502a3SMike Pritchardset to anything other than
94b6acc60dSRuslan Ermilov.Dv UIO_USERSPACE
954b2502a3SMike Pritchardare undefined.
96cd4d01d8SWarner Losh.It Fa ioflag
97cd4d01d8SWarner LoshThe ioflag argument from the
98cd4d01d8SWarner Losh.Fn read
99cd4d01d8SWarner Loshor
100cd4d01d8SWarner Losh.Fn write
101cd4d01d8SWarner Loshfunction calling
102cd4d01d8SWarner Losh.Fn physio .
1034b2502a3SMike Pritchard.El
1044b2502a3SMike Pritchard.Sh RETURN VALUES
1054b2502a3SMike PritchardIf successful
1064b2502a3SMike Pritchard.Fn physio
1074b2502a3SMike Pritchardreturns 0.
1084b2502a3SMike Pritchard.Er EFAULT
1094b2502a3SMike Pritchardis returned if the address range described by
1104b2502a3SMike Pritchard.Fa uio
1114b2502a3SMike Pritchardis not accessible by the requesting process.
1124b2502a3SMike Pritchard.Fn physio
1134b2502a3SMike Pritchardwill return any error resulting from calls to the device strategy routine,
1144b2502a3SMike Pritchardby examining the
1154b2502a3SMike Pritchard.Dv B_ERROR
1164b2502a3SMike Pritchardbuffer flag and the
1174b2502a3SMike Pritchard.Va b_error
1181111b49cSSheldon Hearnfield.
1191111b49cSSheldon HearnNote that the actual transfer size may be less than requested by
1204b2502a3SMike Pritchard.Fa uio
1214b2502a3SMike Pritchardif the device signals an
122b6acc60dSRuslan Ermilov.Dq "end of file"
1234b2502a3SMike Pritchardcondition.
1244b2502a3SMike Pritchard.Sh SEE ALSO
1254b2502a3SMike Pritchard.Xr read 2 ,
1264b2502a3SMike Pritchard.Xr write 2
127e1051231SJosef Karthauser.Sh HISTORY
128e1051231SJosef KarthauserThe
129b6acc60dSRuslan Ermilov.Nm
130b6acc60dSRuslan Ermilovmanual page is originally from
131b6acc60dSRuslan Ermilov.Nx
132b6acc60dSRuslan Ermilovwith minor changes for applicability with
133b6acc60dSRuslan Ermilov.Fx .
134e1051231SJosef Karthauser.Pp
135b6acc60dSRuslan ErmilovThe
136b6acc60dSRuslan Ermilov.Nm
137b6acc60dSRuslan Ermilovcall has been completely re-written for providing higher
1388fb2b565SHiten PandyaI/O and paging performance.
139