OSDN Git Service

Update release pages
[linuxjm/LDP_man-pages.git] / release / man2 / mmap.2
index e60980a..6b853f3 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH MMAP 2 2013\-02\-25 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1997-2000 SUTO, Mitsuaki and NAKANO Takeo
+.\"         all rights reserved.
+.\" Translated 1997-06-26, SUTO, Mitsuaki <suto@av.crl.sony.co.jp>
+.\" Updated & Modified 1999-03-01, NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" Updated 2000-10-12, Nakano Takeo
+.\" Updated 2001-08-16, Nakano Takeo
+.\" Updated 2001-11-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2002-08-13, Akihiro MOTOKI
+.\" Updated 2003-07- 2, Akihiro MOTOKI
+.\" Updated 2003-09-14, Akihiro MOTOKI
+.\" Updated & Modified 2004-12-28, Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated 2005-09-06, Akihiro MOTOKI
+.\" Updated 2005-10-05, Akihiro MOTOKI
+.\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36
+.\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43
+.\" Updated 2007-05-04, Akihiro MOTOKI, LDP v2.46
+.\" Updated 2007-09-03, Akihiro MOTOKI, LDP v2.64
+.\" Updated 2008-08-05, Akihiro MOTOKI, LDP v3.05
+.\" Updated 2008-09-02, Akihiro MOTOKI, LDP v3.08
+.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.15
+.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24
+.\" Updated 2012-05-01, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-07, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH MMAP 2 2014\-08\-19 Linux "Linux Programmer's Manual"
 .SH 名前
 mmap, munmap \- ファイルやデバイスをメモリにマップ/アンマップする
 .SH 書式
@@ -54,7 +80,7 @@ mmap, munmap \- ファイルやデバイスをメモリにマップ/アンマッ
 \fBint munmap(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB);\fP
 .fi
 
-See NOTES for information on feature test macro requirements.
+機能検査マクロの要件に関する情報は「注意」の節を参照。
 .SH 説明
 \fBmmap\fP()  は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成する。 新しいマッピングの開始アドレスは \fIaddr\fP
 で指定される。マッピングの長さは \fIlength\fP 引き数で指定される。
@@ -156,8 +182,8 @@ See NOTES for information on feature test macro requirements.
 .TP 
 \fBMAP_NONBLOCK\fP (Linux 2.5.46 以降)
 \fBMAP_POPULATE\fP と組み合わせた場合のみ意味を持つ。 read\-ahead (前もって読み込むこと) を実行しない。 単に、すでに RAM
-上に存在するページに対して ページテーブルエントリを作成するだけである。 Linux 2.6.23 以降では、このフラグは
-\fBMAP_POPULATE\fP に何の影響も与えない。 いつか \fBMAP_POPULATE\fP と \fBMAP_NONBLOCK\fP
+上に存在するページに対してのみページテーブルエントリを作成する。 Linux 2.6.23 以降では、このフラグは \fBMAP_POPULATE\fP
+に何の影響も与えない。 いつか \fBMAP_POPULATE\fP と \fBMAP_NONBLOCK\fP
 を組み合わせた場合の動作は実装し直されるかもしれない。
 .TP 
 \fBMAP_NORESERVE\fP
@@ -168,8 +194,8 @@ See NOTES for information on feature test macro requirements.
 .TP 
 \fBMAP_POPULATE\fP (Linux 2.5.46 以降)
 マッピング用のページテーブルを配置 (populate) する ファイルマッピングの場合には、これによりファイルが先読み (read\-ahead)
-が行われる。この以後は、マッピングに対するアクセスがページフォールトで ブロックされることがなくなる。 \fBMAP_POPULATE\fP は Linux
-2.6.23 以降でプライベート・マッピングについてのみ サポートされている。
+が行われる。この以後は、マッピングに対するアクセスがページフォールトで ブロックされることがなくなる。 Linux 2.6.23
+以降でのみプライベート・マッピングについて \fBMAP_POPULATE\fP がサポートされている。
 .TP 
 \fBMAP_STACK\fP (Linux 2.6.27 以降)
 .\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
@@ -220,10 +246,10 @@ See NOTES for information on feature test macro requirements.
 .SH エラー
 .TP 
 \fBEACCES\fP
-以下のいずれかの場合。 ファイル記述子の参照先が通常のファイルではない (non\-regular file) 。 \fBMAP_PRIVATE\fP
-を要求したが \fIfd\fP は読み込み用にオープンされていない。 \fBMAP_SHARED\fP を要求して \fBPROT_WRITE\fP をセットしたが
-\fIfd\fP は読み書きモード (\fBO_RDWR\fP)  でオープンされていない、 \fBPROT_WRITE\fP をセットしたが、ファイルは追加
-(append) 専用である。
+以下のいずれかの場合。 ファイル記述子の参照先が通常のファイルではない (non\-regular file) 。 ファイルマッピングを要求したが
+\fIfd\fP は読み込み用にオープンされていない。 \fBMAP_SHARED\fP を要求して \fBPROT_WRITE\fP をセットしたが \fIfd\fP
+は読み書きモード (\fBO_RDWR\fP)  でオープンされていない、 \fBPROT_WRITE\fP をセットしたが、ファイルは追加 (append)
+専用である。
 .TP 
 \fBEAGAIN\fP
 ファイルがロックされている。またはロックされているメモリが多すぎる (\fBsetrlimit\fP(2)  を参照)。
@@ -259,13 +285,16 @@ See NOTES for information on feature test macro requirements.
 \fIprot\fP 引き数は \fBPROT_EXEC\fP を行うように指定されているが、 no\-exec でマウントされたファイルシステム上のファイルに
 マップ領域が対応している。
 .TP 
+\fBEPERM\fP
+操作が file seal により禁止されている。 \fBfcntl\fP(2) 参照。
+.TP 
 \fBETXTBSY\fP
 \fBMAP_DENYWRITE\fP がセットされているが \fIfd\fP で指定されているオブジェクトは書き込み用に開かれている。
 .TP 
 \fBEOVERFLOW\fP
-On 32\-bit architecture together with the large file extension (i.e., using
-64\-bit \fIoff_t\fP): the number of pages used for \fIlength\fP plus number of
-pages used for \fIoffset\fP would overflow \fIunsigned long\fP (32 bits).
+32 ビットアーキテクチャで large file 拡張を使っている場合 (つまり 64 ビットの \fIoff_t\fP を使う場合)、 \fIlength\fP
+で使うページ数と \fIoffset\fP で使うページ数を足した値は \fIunsigned long\fP (32 ビット) を超えてしまう
+(オーバーフローしてしまう) 場合がある。
 .LP
 マップ領域を利用する際に、以下のシグナルが発生することがある:
 .TP 
@@ -287,13 +316,6 @@ SVr4, 4.4BSD, POSIX.1\-2001.
 \fB_POSIX_MAPPED_FILES\fP は <unistd.h> で 0 より大きな値に定義される (\fBsysconf\fP(3)
 も参照のこと)。
 .SH 注意
-.\" Since around glibc 2.1/2.2, depending on the platform.
-このページでは glibc の \fBmmap\fP() のラッパー関数が提供するインターフェースに
-ついて説明している。元々は、この関数は同じ名前のシステムコールを起動していた。
-カーネル 2.4 以降、このシステムコールは \fBmmap2\fP(2) に取って代わられ、現在
-では、 glibc の \fBmmap\fP() のラッパー関数は \fIoffset\fP を適切に調整してから
-\fBmmap2\fP(2) を起動する。
-
 (i386 などの) いくつかのアーキテクチャでは、 \fBPROT_WRITE\fP をセットすると、暗黙のうちに \fBPROT_READ\fP
 がセットされる。 \fBPROT_READ\fP をセットした際に暗黙のうちに \fBPROT_EXEC\fP がセットされるかどうかは、アーキテクチャ依存である。
 移植性を考慮したプログラムでは、 新規にマップした領域でコードを実行したい場合は、常に \fBPROT_EXEC\fP をセットすべきである。
@@ -303,14 +325,20 @@ SVr4, 4.4BSD, POSIX.1\-2001.
 にならないように選択される。 \fBMAP_FIXED\fP フラグが指定され、かつ \fIaddr\fP が 0 (NULL)
 の場合には、マップされるアドレスが 0 (NULL) になる。
 
-Certain \fIflags\fP constants are defined only if either \fB_BSD_SOURCE\fP or
-\fB_SVID_SOURCE\fP is defined.  (Requiring \fB_GNU_SOURCE\fP also suffices, and
-requiring that macro specifically would have been more logical, since these
-flags are all Linux specific.)  The relevant flags are: \fBMAP_32BIT\fP,
-\fBMAP_ANONYMOUS\fP (and the synonym \fBMAP_ANON\fP), \fBMAP_DENYWRITE\fP,
-\fBMAP_EXECUTABLE\fP, \fBMAP_FILE\fP, \fBMAP_GROWSDOWN\fP, \fBMAP_HUGETLB\fP,
-\fBMAP_LOCKED\fP, \fBMAP_NONBLOCK\fP, \fBMAP_NORESERVE\fP, \fBMAP_POPULATE\fP, and
-\fBMAP_STACK\fP.
+.\"
+特定の \fIflags\fP 定数は \fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP のいずれかが定義された場合にのみ定義される。
+(\fB_GNU_SOURCE\fP も定義されている必要がある。これらのフラグはすべて Linux 固有のものなので、 特に \fB_GNU_SOURCE\fP
+を必要とする点はもっと論理的に決められるべきであった。) 関係するフラグは \fBMAP_32BIT\fP, \fBMAP_ANONYMOUS\fP
+(とその同義語の \fBMAP_ANON\fP), \fBMAP_DENYWRITE\fP, \fBMAP_EXECUTABLE\fP, \fBMAP_FILE\fP,
+\fBMAP_GROWSDOWN\fP, \fBMAP_HUGETLB\fP, \fBMAP_LOCKED\fP, \fBMAP_NONBLOCK\fP,
+\fBMAP_NORESERVE\fP, \fBMAP_POPULATE\fP, \fBMAP_STACK\fP である。
+.SS "C ライブラリとカーネル ABI の違い"
+.\" Since around glibc 2.1/2.2, depending on the platform.
+このページでは glibc の \fBmmap\fP() のラッパー関数が提供するインターフェースに
+ついて説明している。元々は、この関数は同じ名前のシステムコールを起動していた。
+カーネル 2.4 以降、このシステムコールは \fBmmap2\fP(2) に取って代わられ、現在
+では、 glibc の \fBmmap\fP() のラッパー関数は \fIoffset\fP を適切に調整してから
+\fBmmap2\fP(2) を起動する。
 .SH バグ
 Linux においては、上記の \fBMAP_NORESERVE\fP で述べられているような保証はない。
 デフォルトでは、システムがメモリを使い切った場合には、 どのプロセスがいつ強制終了されるか分からないからである。
@@ -322,15 +350,12 @@ SUSv3 では、 \fIlength\fP が 0 の場合、 \fBmmap\fP()  は失敗すると
 より前のカーネルでは、 この場合に \fBmmap\fP()  は成功していた (マッピングは作成されず、 \fIaddr\fP が返されていた)。 カーネル
 2.6.12 以降では、 \fBmmap\fP()  はエラー \fBEINVAL\fP で失敗する。
 
-POSIX specifies that the system shall always zero fill any partial page at
-the end of the object and that system will never write any modification of
-the object beyond its end.  On Linux, when you write data to such partial
-page after the end of the object, the data stays in the page cache even
-after the file is closed and unmapped and even though the data is never
-written to the file itself, subsequent mappings may see the modified
-content.  In some cases, this could be fixed by calling \fBmsync\fP(2)  before
-the unmap takes place; however, this doesn't work on tmpfs (for example,
-when using POSIX shared memory interface documented in \fBshm_overview\fP(7)).
+POSIX では、 システムはオブジェクト末尾の部分ページを常に 0 で埋め、 末尾より後ろのオブジェクトを決して変更してはならない、と規定している。
+Linux では、 オブジェクト末尾より後ろの部分ページにデータを書き込んだ場合、
+そのファイルをクローズしてアンマップした後であってもページキャッシュにデータが残り続け、 データがファイル自体に書き込まれていなくても、
+それ以降のマッピングで変更された内容が見える可能性がある。 いくつかの場合では、 アンマップを行う前に \fBmsync\fP(2) を呼び出すことで、
+この状況を修正することができる。 しかし、 これは tmpfs では機能しない (例えば、 \fBshm_overview\fP(7) で説明されている
+POSIX 共有メモリインターフェースを使った場合)。
 .SH 例
 .\" FIXME . Add an example here that uses an anonymous shared region for
 .\" IPC between parent and child.
@@ -338,8 +363,8 @@ when using POSIX shared memory interface documented in \fBshm_overview\fP(7)).
 以下のプログラムは、一番目のコマンドライン引き数で指定された ファイルの一部を標準出力に表示する。
 表示する範囲は、二番目、三番目のコマンドライン引き数で渡される オフセットと長さで指定される。
 このプログラムは、指定されたファイルの必要なページのメモリ・ マッピングを作成し、 \fBwrite\fP(2)  を使って所望のバイトを出力する。
+.SS プログラムのソース
 .nf
-
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -409,15 +434,15 @@ main(int argc, char *argv[])
 }
 .fi
 .SH 関連項目
-\fBgetpagesize\fP(2), \fBmincore\fP(2), \fBmlock\fP(2), \fBmmap2\fP(2), \fBmprotect\fP(2),
-\fBmremap\fP(2), \fBmsync\fP(2), \fBremap_file_pages\fP(2), \fBsetrlimit\fP(2),
-\fBshmat\fP(2), \fBshm_open\fP(3), \fBshm_overview\fP(7)
+\fBgetpagesize\fP(2), \fBmemfd_create\fP(2), \fBmincore\fP(2), \fBmlock\fP(2),
+\fBmmap2\fP(2), \fBmprotect\fP(2), \fBmremap\fP(2), \fBmsync\fP(2),
+\fBremap_file_pages\fP(2), \fBsetrlimit\fP(2), \fBshmat\fP(2), \fBshm_open\fP(3),
+\fBshm_overview\fP(7)
+
+\fBproc\fP(5) の \fI/proc/[pid]/maps\fP, \fI/proc/[pid]/map_files\fP,
+\fI/proc/[pid]/smaps\fP の説明。
 
+B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\-129 and 389\-391.
 .\"
 .\" Repeat after me: private read-only mappings are 100% equivalent to
 .\" shared read-only mappings. No ifs, buts, or maybes. -- Linus
-B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\-129 and 389\-391.
-.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。