aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man9/physio.9
blob: 3a3e2f283fa20c724056f737da3ddf694599ec41 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
.\"	%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.
.\"
.\" %FreeBSD: src/share/man/man9/physio.9,v 1.15.2.1 2005/01/05 08:31:19 krion Exp %
.\" $FreeBSD$
.\"
.Dd July 8, 2004
.Dt PHYSIO 9
.Os
.Sh 名称
.Nm physio
.Nd ロウデバイスの入出力の開始
.Sh 書式
.In sys/param.h
.In sys/systm.h
.In sys/bio.h
.In sys/buf.h
.Ft int
.Fn physio "dev_t dev" "struct uio *uio" "int ioflag"
.Sh 解説
.Fn physio
は通常、
文字型デバイスの
.Fn read
および
.Fn write
ルーチンから呼び出されるヘルパー関数で、
ユーザプロセスのバッファへの入出力を開始させます。
呼び出しごとの最大のデータ転送量は
.Fa dev->si_iosize_max
によって決定されます。
.Fn physio
の呼び出しは入出力要求を
.Fn strategy
要求に変換し、その処理のため新しい要求をドライバの
.Fn strategy
ルーチンに渡します。
.Pp
.Fa uio
構造体は通常ユーザ空間のアドレスを示すので、
.Fn physio
はこれらのページをメモリ中にロックする必要があります。
これは適切なページに対する
.Fn vmapbuf
を呼び出すことで行われます。
以前にエラー状態が検出された時を除いて、
.Fn physio
は常にリターンする前に全ての要求された転送が完了するまで待ちます。
.Pp
引数の詳細を下記に示します。
.Bl -tag -width indent
.It Fa dev
デバイスを識別するために関連付けられたデバイス番号。
.It Fa uio
ユーザプロセスから要求された転送全体の記述。
現在は、
.Fa uio
構造体の
.Va uio_segflg
フラグに
.Dv UIO_USERSPACE
以外の値をセットして渡した場合の結果は未定義です。
.It Fa ioflag
.Fn physio
を呼び出している
.Fn read
または
.Fn write
関数からの ioflag 引数。
.El
.Sh 戻り値
成功すれば
.Fn physio
は 0 を返します。
.Fa uio
構造体に示されているアドレス範囲が要求したプロセスから
アクセスできない場合には
.Er EFAULT
を返します。
.Fn physio
はデバイスの strategy ルーチンを呼んだ結果として発生する
あらゆるエラーを
.Dv B_ERROR
バッファフラグおよび
.Va b_error
フィールドを調査して返します。
デバイスが
.Dq "end of file"
の状態を示している時には、実際の転送サイズは
.Fa uio
構造体で要求しているサイズよりも小さくなる事に注意してください。
.Sh 関連項目
.Xr read 2 ,
.Xr write 2
.Sh 歴史
.Nm
のマニュアルページは元々は
.Nx
のもので、
.Fx
に適応させるために少しの変更があります。
.Pp
.Nm
の呼び出しは、より高い入出力およびページングのパフォーマンスのために、
完全に書き直されています。