I'm very pleased to announce the release of our new website and documentation using the new toolchain with Hugo and AsciiDoctor. To get more information about the new toolchain please read the FreeBSD Documentation Project Primer[1], Hugo docs[2] and AsciiDoctor docs[3]. Acknowledgment: Benedict Reuschling <bcr@> Glen Barber <gjb@> Hiroki Sato <hrs@> Li-Wen Hsu <lwhsu@> Sean Chittenden <seanc@> The FreeBSD Foundation [1] https://docs.FreeBSD.org/en/books/fdp-primer/ [2] https://gohugo.io/documentation/ [3] https://docs.asciidoctor.org/home/ Approved by: doceng, core
201 lines
5.5 KiB
Groff
201 lines
5.5 KiB
Groff
.\" Copyright (c) 1999 Softweyr LLC.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" 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.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY Softweyr LLC 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 Softweyr LLC 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/lib/libc/sys/aio_write.2,v 1.18 2004/07/03 22:30:09 ru Exp %
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd June 2, 1999
|
|
.Dt AIO_WRITE 2
|
|
.Os
|
|
.Sh 名称
|
|
.Nm aio_write
|
|
.Nd ファイルへの非同期書込み (REALTIME)
|
|
.Sh ライブラリ
|
|
.Lb libc
|
|
.Sh 書式
|
|
.In aio.h
|
|
.Ft int
|
|
.Fn aio_write "struct aiocb *iocb"
|
|
.Sh 解説
|
|
.Fn aio_write
|
|
システムコールによって、呼び出し元プロセスは
|
|
.Fa iocb->aio_buf
|
|
が指すバッファから記述子
|
|
.Fa iocb->aio_fildes
|
|
に
|
|
.Fa iocb->aio_nbytes
|
|
を書き込めます。
|
|
書込み要求が記述子への待ち行列に入れられてしまうと、
|
|
ただちに呼び出しは戻ります。
|
|
呼び出しが戻った時点で書込みは完了している可能性も完了していない
|
|
可能性もあります。
|
|
無効な引数のためなどにより要求を待ち行列に入れられない場合は、
|
|
呼び出しは要求を待ち行列に入れずに戻ります。
|
|
.Pp
|
|
.Fa iocb->aio_fildes
|
|
用に
|
|
.Dv O_APPEND
|
|
が設定されている場合、
|
|
.Fn aio_write
|
|
操作は呼び出しが行われたのと同じ順序で
|
|
ファイルの末尾に追加されます。
|
|
.Dv O_APPEND
|
|
がファイル記述子用に設定されていない場合、書込み操作はファイルの先頭に
|
|
.Fa iocb->aio_offset
|
|
を加えた絶対位置で行われます。
|
|
.Pp
|
|
.Dv _POSIX_PRIORITIZED_IO
|
|
が定義されており、かつ記述子がそれをサポートしている場合、
|
|
待ち行列に入れられた操作は呼び出しプロセスの優先順位から
|
|
.Fa iocb->aio_reqprio
|
|
を減算したのに等しい優先順位にされます。
|
|
.Pp
|
|
.Fa iocb
|
|
ポインタは待ち行列に入れられた操作の戻り値、またはエラー状態を
|
|
判定するために、
|
|
.Fn aio_return
|
|
および
|
|
.Fn aio_error
|
|
への引数として使用できます。
|
|
.Pp
|
|
要求が正常に待ち行列に入れられると、コンテキストとして要求の間に
|
|
.Fa iocb->aio_offset
|
|
の値が修正できるので、
|
|
この値は要求が待ち行列に入れられた後に参照されてはなりません。
|
|
.Sh 制限
|
|
.Fa iocb
|
|
が指す非同期入出力制御ブロック構造体、およびその構造体の
|
|
.Fa iocb->aio_buf
|
|
メンバが参照するバッファは、
|
|
操作が完了するまで有効なままでいる必要があります。
|
|
このため、これらのオブジェクトについて自動 (スタック) 変数
|
|
の使用は推奨されません。
|
|
.Pp
|
|
正しくないコンテキスト情報がカーネルに引き渡されるのを回避するために、
|
|
非同期入出力制御バッファ
|
|
.Fa iocb
|
|
は、
|
|
.Fn aio_write
|
|
システムコールの前に 0 にする必要があります。
|
|
.Pp
|
|
要求が待ち行列に入れられた後、要求が完了するまでは
|
|
非同期入出力制御ブロック構造体、
|
|
またはバッファの内容を修正することは許されません。
|
|
.Pp
|
|
.Fa iocb->aio_offset
|
|
内のファイルオフセットが
|
|
.Fa iocb->aio_fildes
|
|
用のオフセット最大を越える場合は入出力は行われません。
|
|
.Sh 戻り値
|
|
.Rv -std aio_write
|
|
.Sh エラー
|
|
.Fn aio_write
|
|
システムコールは次の場合に処理を失敗します:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EAGAIN
|
|
システムリソースの制限のために要求は待ち行列に入れられませんでした。
|
|
.It Bq Er ENOSYS
|
|
.Fn aio_write
|
|
システムコールはサポートされていません。
|
|
.El
|
|
.Pp
|
|
次の状態は
|
|
.Fn aio_write
|
|
システムコールが行われたときに同期的に検出でき、
|
|
その後いつでも非同期的に検出できます。
|
|
これらが呼び出し時に検出された場合に
|
|
.Fn aio_write
|
|
は -1 を返し
|
|
.Va errno
|
|
を適切に設定します。
|
|
そうでない場合は
|
|
.Fn aio_return
|
|
システムコールが戻り値 -1 で呼び出される必要があり、
|
|
.Va errno
|
|
で返されている実際の値を判定するために
|
|
.Fn aio_error
|
|
が呼び出される必要があります。
|
|
.Pp
|
|
.Bl -tag -width Er
|
|
.It Bq Er EBADF
|
|
.Fa iocb->aio_fildes
|
|
引数が無効であるか、書込みにはオープンされていません。
|
|
.It Bq Er EINVAL
|
|
オフセット
|
|
.Fa iocb->aio_offset
|
|
が有効でない、
|
|
.Fa iocb->aio_reqprio
|
|
によって指定される優先順位が
|
|
有効な優先順位でない、または
|
|
.Fa iocb->aio_nbytes
|
|
によって指定されるバイト数が有効ではありません。
|
|
.El
|
|
.Pp
|
|
要求が正常に待ち行列に入れられたものの、
|
|
後でキャンセルされるかエラーが発生した場合、
|
|
.Fn aio_return
|
|
システムコールによって返された値は
|
|
.Xr write 2
|
|
システムコールごとのものであり、
|
|
.Fn aio_error
|
|
システムコールによって返された値は
|
|
.Xr write 2
|
|
システムコールから返されたエラーの 1 つであるか、または次の 1 つです。
|
|
.Bl -tag -width Er
|
|
.It Bq Er EBADF
|
|
.Fa iocb->aio_fildes
|
|
引数は書込みについては無効です。
|
|
.It Bq Er ECANCELED
|
|
要求は
|
|
.Fn aio_cancel
|
|
の呼び出しによって明示的にキャンセルされました。
|
|
.It Bq Er EINVAL
|
|
オフセット
|
|
.Fa iocb->aio_offset
|
|
は無効です。
|
|
.El
|
|
.Sh 関連項目
|
|
.Xr aio_cancel 2 ,
|
|
.Xr aio_error 2 ,
|
|
.Xr aio_return 2 ,
|
|
.Xr aio_suspend 2 ,
|
|
.Xr aio_waitcomplete 2 ,
|
|
.Xr aio 4
|
|
.Sh 規格
|
|
.Fn aio_write
|
|
システムコールは
|
|
.St -p1003.1
|
|
標準に適合しています。
|
|
.Sh 歴史
|
|
.Fn aio_write
|
|
システムコールは
|
|
.Fx 3.0
|
|
ではじめて登場しました。
|
|
.Sh 作者
|
|
このマニュアルページは
|
|
.An Wes Peters Aq wes@softweyr.com
|
|
が作成しました。
|
|
.Sh バグ
|
|
.Fa iocb->_aiocb_private
|
|
内の誤った情報はカーネルを混乱させる可能性があります。
|