physio()
は通常、
文字型デバイスの
read()
および
write()
ルーチンから呼び出されるヘルパー関数で、
ユーザプロセスのバッファへの入出力を開始させます。
呼び出しごとの最大のデータ転送量は
dev->si_iosize_max
によって決定されます。
physio()
の呼び出しは入出力要求を
strategy()
要求に変換し、その処理のため新しい要求をドライバの
strategy()
ルーチンに渡します。
uio
構造体は通常ユーザ空間のアドレスを示すので、
physio()
はこれらのページをメモリ中にロックする必要があります。
これは適切なページに対する
vmapbuf()
を呼び出すことで行われます。
以前にエラー状態が検出された時を除いて、
physio()
は常にリターンする前に全ての要求された転送が完了するまで待ちます。
引数の詳細を下記に示します。
dev
|
|
デバイスを識別するために関連付けられたデバイス番号。
|
uio
|
|
ユーザプロセスから要求された転送全体の記述。
現在は、
uio
構造体の
uio_segflg
フラグに
UIO_USERSPACE
以外の値をセットして渡した場合の結果は未定義です。
|
ioflag
|
|
physio()
を呼び出している
read()
または
write()
関数からの ioflag 引数。
|