OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / draft / man2 / vmsplice.2
index 4919c8e..dff3a33 100644 (file)
@@ -1,8 +1,7 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" This manpage is Copyright (C) 2006 Jens Axboe
 .\" and Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\"
 .\" Japanese Version Copyright (c) 2007  Akihiro MOTOKI
 .\"         all rights reserved.
 .\" Translated 2007-02-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" 
-.TH VMSPLICE 2 2009-09-15 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O vmsplice \- splice user pages into a pipe
-.SH Ì¾Á°
-vmsplice \- ¥æ¡¼¥¶¡¦¥Ú¡¼¥¸¤ò¥Ñ¥¤¥×¤Ë·Ñ¤®¹ç¤ï¤»¤ë
-.\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.\"
+.TH VMSPLICE 2 2014\-10\-02 Linux "Linux Programmer's Manual"
+.SH 名前
+vmsplice \- ユーザーページをパイプに継ぎ合わせる
+.SH 書式
 .nf
-.B #define _GNU_SOURCE
-.B #include <fcntl.h>
-.B #include <sys/uio.h>
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
+\fB#include <fcntl.h>\fP
+\fB#include <sys/uio.h>\fP
 
-.BI "ssize_t vmsplice(int " fd ", const struct iovec *" iov ,
-.BI "                 unsigned long " nr_segs ", unsigned int " flags );
+\fBssize_t vmsplice(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB,\fP
+\fB                 unsigned long \fP\fInr_segs\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP
 .fi
 .\" Return type was long before glibc 2.7
-.\"O .SH DESCRIPTION
-.SH ÀâÌÀ
+.SH 説明
 .\" Linus: vmsplice() system call to basically do a "write to
 .\" the buffer", but using the reference counting and VM traversal
 .\" to actually fill the buffer. This means that the user needs to
@@ -52,196 +54,75 @@ vmsplice \- 
 .\" the kernel-space one (contrast this to "write()", which copies
 .\" the actual data, and you can thus reuse the buffer immediately
 .\" after a successful write), but that is often easy to do.
-.\"O The
-.\"O .BR vmsplice ()
-.\"O system call maps
-.\"O .I nr_segs
-.\"O ranges of user memory described by
-.\"O .I iov
-.\"O into a pipe.
-.\"O The file descriptor
-.\"O .I fd
-.\"O must refer to a pipe.
-.BR vmsplice ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢
-.I iov
-¤Ç»ØÄꤵ¤ì¤¿¥æ¡¼¥¶¡¦¥á¥â¥ê¤Î
-.I nr_segs
-¤ÎÈϰϤò¥Ñ¥¤¥×¤Ë¥Þ¥Ã¥Ô¥ó¥°¤¹¤ë¡£
-.I fd
-¤Ï¥Ñ¥¤¥×¤ò»²¾È¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+\fBvmsplice\fP()  システムコールは、 \fIiov\fP で指定されたユーザーメモリーの \fInr_segs\fP の範囲をパイプにマッピングする。
+\fIfd\fP はパイプを参照していなければならない。
 
-.\"O The pointer
-.\"O .I iov
-.\"O points to an array of
-.\"O .I iovec
-.\"O structures as defined in
-.\"O .IR <sys/uio.h> :
-¥Ý¥¤¥ó¥¿
-.I iov
-¤Ï
-.I iovec
-¹½Â¤ÂΤÎÇÛÎó¤ò»Ø¤¹¡£
-.I iovec
-¹½Â¤ÂΤÏ
-.I <sys/uio.h>
-¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
+ポインター \fIiov\fP は \fIiovec\fP 構造体の配列を指す。 \fIiovec\fP 構造体は \fI<sys/uio.h>\fP
+で以下のように定義されている:
 
 .in +4n
 .nf
 struct iovec {
-.\"O     void  *iov_base;            /* Starting address */
-.\"O     size_t iov_len;             /* Number of bytes */
-    void  *iov_base;            /* ³«»Ï¥¢¥É¥ì¥¹ */
-    size_t iov_len;             /* ¥Ð¥¤¥È¿ô */
+    void  *iov_base;            /* 開始アドレス */
+    size_t iov_len;             /* バイト数 */
 };
 .in
 .fi
 
-.\"O The
-.\"O .I flags
-.\"O argument is a bit mask that is composed by ORing together
-.\"O zero or more of the following values:
-.I flags
-°ú¤­¿ô¤Ë¤Ï¡¢°Ê²¼¤ÎÃͤΠ0 ¸Ä°Ê¾å¤ò¥Ó¥Ã¥ÈËè¤ÎÏÀÍýϤηÁ¤Ç»ØÄꤹ¤ë¡£
-.TP 1.9i
-.B SPLICE_F_MOVE
-.\"O Unused for
-.\"O .BR vmsplice ();
-.\"O see
-.\"O .BR splice (2).
-.BR vmsplice ()
-¤Ç¤Ï̤»ÈÍÑ¡£
-.BR splice (2)
-»²¾È¡£
-.TP
-.B SPLICE_F_NONBLOCK
+\fIflags\fP 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。
+.TP  1.9i
+\fBSPLICE_F_MOVE\fP
+\fBvmsplice\fP()  では未使用。 \fBsplice\fP(2)  参照。
+.TP 
+\fBSPLICE_F_NONBLOCK\fP
 .\" Not used for vmsplice
 .\" May be in the future -- therefore EAGAIN
-.\"O Do not block on I/O; see
-.\"O .BR splice (2)
-.\"O for further details.
-Æþ½ÐÎϤÇÄä»ß (block) ¤·¤Ê¤¤¡£¾ÜºÙ¤Ï
-.BR splice (2)
-»²¾È¡£
-.TP
-.B SPLICE_F_MORE
-.\"O Currently has no effect for
-.\"O .BR vmsplice (),
-.\"O but may be implemented in the future; see
-.\"O .BR splice (2).
-¸½ºß¤Î¤È¤³¤í
-.BR vmsplice ()
-¤Ç¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¤¤¬¡¢¾­ÍèŪ¤Ë¤Ï¼ÂÁõ¤µ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
-.BR splice (2)
-»²¾È¡£
-.TP
-.B SPLICE_F_GIFT
-.\"O The user pages are a gift to the kernel.
-.\"O The application may not modify this memory ever,
-.\"O .\" FIXME Explain the following line in a little more detail:
-.\"O or page cache and on-disk data may differ.
-¥æ¡¼¥¶¡¦¥Ú¡¼¥¸¤¬¥«¡¼¥Í¥ë¤ØÅϤ¹¤â¤Î (gift) ¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¡£
-¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤³¤Î¥á¥â¥ê¤òÀäÂФËÊѹ¹¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-.\" FIXME Explain the following line in a little more detail:
-¤µ¤â¤Ê¤±¤ì¤Ð¡¢¥Ú¡¼¥¸¥­¥ã¥Ã¥·¥å¤È¥Ç¥£¥¹¥¯¾å¤Î¥Ç¡¼¥¿¤Ï
-°ìÃפ·¤Ê¤¯¤Ê¤ë¤À¤í¤¦¡£
-.\"O Gifting pages to the kernel means that a subsequent
-.\"O .BR splice (2)
-.\"O .B SPLICE_F_MOVE
-.\"O can successfully move the pages;
-¥Ú¡¼¥¸¤ò¥«¡¼¥Í¥ë¤ËÅϤ¹¤È¡¢¤³¤Î¼¡¤Î
-.BR splice (2)
-.B SPLICE_F_MOVE
-¤Ç¤½¤Î¥Ú¡¼¥¸¤Î°ÜÆ°¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£
-.\"O if this flag is not specified, then a subsequent
-.\"O .BR splice (2)
-.\"O .B SPLICE_F_MOVE
-.\"O must copy the pages.
-¤³¤Î¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¤³¤Î¼¡¤Î
-.BR splice (2)
-.B SPLICE_F_MOVE
-¤Ç¤½¤Î¥Ú¡¼¥¸¤Î¥³¥Ô¡¼¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.\"O Data must also be properly page aligned, both in memory and length.
-¥Ç¡¼¥¿¤Ï¥á¥â¥ê¾å¤Ç¥Ú¡¼¥¸¶­³¦¤Ë¤¢¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢
-Ťµ¤â¥Ú¡¼¥¸¶­³¦¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+入出力で停止 (block) しない。詳細は \fBsplice\fP(2)  参照。
+.TP 
+\fBSPLICE_F_MORE\fP
+現在のところ \fBvmsplice\fP()  では何の効果もないが、将来的には実装される可能性がある。 \fBsplice\fP(2)  参照。
+.TP 
+\fBSPLICE_F_GIFT\fP
+.\" FIXME . Explain the following line in a little more detail:
+.\" FIXME
+.\"    It looks like the page-alignment requirement went away with
+.\"    commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d
+.\"
 .\" .... if we expect to later SPLICE_F_MOVE to the cache.
-.\"O .SH RETURN VALUE
-.SH ÊÖ¤êÃÍ
-.\"O Upon successful completion,
-.\"O .BR vmsplice ()
-.\"O returns the number of bytes transferred to the pipe.
-.\"O On error,
-.\"O .BR vmsplice ()
-.\"O returns \-1 and
-.\"O .I errno
-.\"O is set to indicate the error.
-À®¸ù¤·¤Æ´°Î»¤¹¤ë¤È¡¢
-.BR vmsplice ()
-¤Ï¥Ñ¥¤¥×¤ËžÁ÷¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
-¥¨¥é¡¼¤Î¾ì¹ç¡¢
-.BR vmplice ()
-¤Ï \-1 ¤òÊÖ¤·¡¢
-.I errno
-¤ò¥¨¥é¡¼¤ò¼¨¤¹ÃͤËÀßÄꤹ¤ë¡£
-.\"O .SH ERRORS
-.SH ¥¨¥é¡¼
-.TP
-.B EBADF
-.\"O .I fd
-.\"O either not valid, or doesn't refer to a pipe.
-.I fd
-¤¬Í­¸ú¤Ç¤Ê¤¤¡¢¤â¤·¤¯¤Ï¥Ñ¥¤¥×¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤¡£
-.TP
-.B EINVAL
-.\"O .I nr_segs
-.\"O is 0 or greater than
-.\"O .BR IOV_MAX ;
-.\"O or memory not aligned if
-.\"O .B SPLICE_F_GIFT
-.\"O set.
-.I nr_segs
-¤¬ 0 ¤â¤·¤¯¤Ï
-.B IOV_MAX
-¤è¤ê¤âÂ礭¤¤¡£¤Þ¤¿¤Ï
-.B SPLICE_F_GIFT
-¤¬ÀßÄꤵ¤ì¤¿¤¬¥á¥â¥ê¤¬¥Ú¡¼¥¸¶­³¦¤Ë¤¢¤Ã¤Æ¤¤¤Ê¤¤¡£
-.TP
-.B ENOMEM
-.\"O Out of memory.
-¥á¥â¥êÉÔ­¡£
-.\"O .SH VERSIONS
-.SH ¥Ð¡¼¥¸¥ç¥ó
-.\"O The
-.\"O .BR vmsplice ()
-.\"O system call first appeared in Linux 2.6.17.
-.BR vmsplice ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux 2.6.17 ¤Ç½é¤á¤ÆÅо줷¤¿¡£
-.\"O .SH "CONFORMING TO"
-.SH ½àµò
-.\"O This system call is Linux-specific.
-¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux ¸ÇÍ­¤Ç¤¢¤ë¡£
-.\"O .SH NOTES
-.SH È÷¹Í
-.\"O .BR vmsplice ()
-.\"O follows the other vectorized read/write type functions when it comes to
-.\"O limitations on number of segments being passed in.
-.\"O This limit is
-.\"O .B IOV_MAX
-.\"O as defined in
-.\"O .IR <limits.h> .
-.\"O At the time of this writing, that limit is 1024.
-»ØÄꤵ¤ì¤¿¥»¥°¥á¥ó¥È¿ô¤¬¾å¸Â¤Ë㤷¤¿¾ì¹ç¡¢
-.BR vmsplice ()
-¤Ï¾¤Î¥Ù¥¯¥È¥ë·Á¼°¤Î read/write ¤ò¹Ô¤¦´Ø¿ô¤ÈƱ¤¸Æ°ºî¤ò¤¹¤ë¡£
-¾å¸Â¤Ï
-.B IOV_MAX
-¤Ç¤¢¤ê¡¢
-.I <limits.h>
-¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-¤³¤Î¥É¥­¥å¥á¥ó¥È¤ò½ñ¤¤¤¿»þÅÀ¤Ç¤ÎÃͤϠ1024 ¤Ç¤¢¤ë¡£
-.\"O .SH SEE ALSO
-.SH ´ØÏ¢¹àÌÜ
-.BR splice (2),
-.BR tee (2),
-.BR feature_test_macros (7)
+ユーザーページがカーネルへ渡すもの (gift) であることを示す。 アプリケーションはこのメモリーを絶対に変更してはならない。
+さもなければ、ページキャッシュとディスク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の \fBsplice\fP(2)
+\fBSPLICE_F_MOVE\fP でそのページの移動を行うことができる。 このフラグが指定されなかった場合、この次の \fBsplice\fP(2)
+\fBSPLICE_F_MOVE\fP でそのページのコピーを行わなければならない。 データはメモリー上でページ境界にあっていなければならず、
+長さもページ境界の倍数でなければならない。
+.SH 返り値
+成功して完了すると、 \fBvmsplice\fP()  はパイプに転送したバイト数を返す。 エラーの場合、 \fBvmplice\fP()  は \-1 を返し、
+\fIerrno\fP をエラーを示す値に設定する。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fBSPLICE_F_NONBLOCK\fP が \fIflags\fP に指定されていて、かつ操作が停止するような状態であった。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効でない、もしくはパイプを参照していない。
+.TP 
+\fBEINVAL\fP
+\fInr_segs\fP が \fBIOV_MAX\fP よりも大きい。または \fBSPLICE_F_GIFT\fP
+が設定されたがメモリーがページ境界にあっていない。
+.TP 
+\fBENOMEM\fP
+メモリー不足。
+.SH バージョン
+\fBvmsplice\fP() システムコールは Linux 2.6.17 で初めて登場した。
+ライブラリによるサポートは glibc バージョン 2.5 で追加された。
+.SH 準拠
+このシステムコールは Linux 固有である。
+.SH 注意
+指定されたセグメント数が上限に達した場合、 \fBvmsplice\fP()  は他のベクトル形式の read/write を行う関数と同じ動作をする。
+上限は \fBIOV_MAX\fP であり、 \fI<limits.h>\fP で定義されている。 このドキュメントを書いた時点での値は 1024
+である。
+.SH 関連項目
+\fBsplice\fP(2), \fBtee\fP(2)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。