xref: /freebsd/share/man/man9/physio.9 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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.\"
184b2502a3SMike Pritchard.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
194b2502a3SMike Pritchard.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
204b2502a3SMike Pritchard.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
214b2502a3SMike Pritchard.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
224b2502a3SMike Pritchard.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
234b2502a3SMike Pritchard.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
244b2502a3SMike Pritchard.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
254b2502a3SMike Pritchard.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
264b2502a3SMike Pritchard.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
274b2502a3SMike Pritchard.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
284b2502a3SMike Pritchard.\" POSSIBILITY OF SUCH DAMAGE.
294b2502a3SMike Pritchard.\"
30*5dc6c3a3SEd Schouten.Dd January 19, 2012
314b2502a3SMike Pritchard.Dt PHYSIO 9
323d45e180SRuslan Ermilov.Os
334b2502a3SMike Pritchard.Sh NAME
344b2502a3SMike Pritchard.Nm physio
354b2502a3SMike Pritchard.Nd initiate I/O on raw devices
364b2502a3SMike Pritchard.Sh SYNOPSIS
3732eef9aeSRuslan Ermilov.In sys/param.h
3832eef9aeSRuslan Ermilov.In sys/systm.h
39f16b3c0dSChad David.In sys/bio.h
4032eef9aeSRuslan Ermilov.In sys/buf.h
414b2502a3SMike Pritchard.Ft int
42*5dc6c3a3SEd Schouten.Fn physio "struct cdev *dev" "struct uio *uio" "int ioflag"
434b2502a3SMike Pritchard.Sh DESCRIPTION
444b2502a3SMike PritchardThe
454b2502a3SMike Pritchard.Fn physio
46b6acc60dSRuslan Ermilovis a helper function typically called from character device
47b6acc60dSRuslan Ermilov.Fn read
48b6acc60dSRuslan Ermilovand
49b6acc60dSRuslan Ermilov.Fn write
501111b49cSSheldon Hearnroutines to start I/O on a user process buffer.
51e1051231SJosef KarthauserThe maximum amount of data to transfer with each call
52b6acc60dSRuslan Ermilovis determined by
53b6acc60dSRuslan Ermilov.Fa dev->si_iosize_max .
54cd4d01d8SWarner LoshThe
55cd4d01d8SWarner Losh.Fn physio
56cd4d01d8SWarner Loshcall converts the I/O request into a
57cd4d01d8SWarner Losh.Fn strategy
58cd4d01d8SWarner Loshrequest and passes the new request to the driver's
59cd4d01d8SWarner Losh.Fn strategy
60cd4d01d8SWarner Loshroutine for processing.
61e1051231SJosef Karthauser.Pp
621111b49cSSheldon HearnSince
634b2502a3SMike Pritchard.Fa uio
644b2502a3SMike Pritchardnormally describes user space addresses,
654b2502a3SMike Pritchard.Fn physio
66c0854fb7SRuslan Ermilovneeds to lock those pages into memory.
67cd4d01d8SWarner LoshThis is done by calling
68cd4d01d8SWarner Losh.Fn vmapbuf
69cd4d01d8SWarner Loshfor the appropriate pages.
704b2502a3SMike Pritchard.Fn physio
714b2502a3SMike Pritchardalways awaits the completion of the entire requested transfer before
721111b49cSSheldon Hearnreturning, unless an error condition is detected earlier.
734b2502a3SMike Pritchard.Pp
744b2502a3SMike PritchardA break-down of the arguments follows:
754b2502a3SMike Pritchard.Bl -tag -width indent
764b2502a3SMike Pritchard.It Fa dev
774b2502a3SMike PritchardThe device number identifying the device to interact with.
784b2502a3SMike Pritchard.It Fa uio
794b2502a3SMike PritchardThe description of the entire transfer as requested by the user process.
804b2502a3SMike PritchardCurrently, the results of passing a
814b2502a3SMike Pritchard.Fa uio
824b2502a3SMike Pritchardstructure with the
83b6acc60dSRuslan Ermilov.Va uio_segflg
844b2502a3SMike Pritchardset to anything other than
85b6acc60dSRuslan Ermilov.Dv UIO_USERSPACE
864b2502a3SMike Pritchardare undefined.
87cd4d01d8SWarner Losh.It Fa ioflag
88cd4d01d8SWarner LoshThe ioflag argument from the
89cd4d01d8SWarner Losh.Fn read
90cd4d01d8SWarner Loshor
91cd4d01d8SWarner Losh.Fn write
92cd4d01d8SWarner Loshfunction calling
93cd4d01d8SWarner Losh.Fn physio .
944b2502a3SMike Pritchard.El
954b2502a3SMike Pritchard.Sh RETURN VALUES
964b2502a3SMike PritchardIf successful
974b2502a3SMike Pritchard.Fn physio
984b2502a3SMike Pritchardreturns 0.
994b2502a3SMike Pritchard.Er EFAULT
1004b2502a3SMike Pritchardis returned if the address range described by
1014b2502a3SMike Pritchard.Fa uio
1024b2502a3SMike Pritchardis not accessible by the requesting process.
1034b2502a3SMike Pritchard.Fn physio
1044b2502a3SMike Pritchardwill return any error resulting from calls to the device strategy routine,
1054b2502a3SMike Pritchardby examining the
1064b2502a3SMike Pritchard.Dv B_ERROR
1074b2502a3SMike Pritchardbuffer flag and the
1084b2502a3SMike Pritchard.Va b_error
1091111b49cSSheldon Hearnfield.
1101111b49cSSheldon HearnNote that the actual transfer size may be less than requested by
1114b2502a3SMike Pritchard.Fa uio
1124b2502a3SMike Pritchardif the device signals an
113b6acc60dSRuslan Ermilov.Dq "end of file"
1144b2502a3SMike Pritchardcondition.
1154b2502a3SMike Pritchard.Sh SEE ALSO
1164b2502a3SMike Pritchard.Xr read 2 ,
1174b2502a3SMike Pritchard.Xr write 2
118e1051231SJosef Karthauser.Sh HISTORY
119e1051231SJosef KarthauserThe
120b6acc60dSRuslan Ermilov.Nm
121b6acc60dSRuslan Ermilovmanual page is originally from
122b6acc60dSRuslan Ermilov.Nx
123b6acc60dSRuslan Ermilovwith minor changes for applicability with
124b6acc60dSRuslan Ermilov.Fx .
125e1051231SJosef Karthauser.Pp
126b6acc60dSRuslan ErmilovThe
127b6acc60dSRuslan Ermilov.Nm
128b6acc60dSRuslan Ermilovcall has been completely re-written for providing higher
1298fb2b565SHiten PandyaI/O and paging performance.
130