OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man2 / mmap.2
index 788f62c..41a8345 100644 (file)
 .\" 2007-07-10, mtk, Added an example program.
 .\" 2008-11-18, mtk, document MAP_STACK
 .\"
-.\" 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
+.\"*******************************************************************
 .\"
-.\"WORD                file descriptor         ファイル記述子
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH MMAP 2 2009-09-26 "Linux" "Linux Programmer's Manual"
+.\"*******************************************************************
+.TH MMAP 2 2012\-04\-16 Linux "Linux Programmer's Manual"
 .SH 名前
 mmap, munmap \- ファイルやデバイスをメモリにマップ/アンマップする
 .SH 書式
 .nf
-.B #include <sys/mman.h>
+\fB#include <sys/mman.h>\fP
 .sp
-.BI "void *mmap(void *" addr ", size_t " length \
-", int " prot ", int " flags ,
-.BI "           int " fd ", off_t " offset );
-.BI "int munmap(void *" addr ", size_t " length );
+\fBvoid *mmap(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, int \fP\fIprot\fP\fB, int \fP\fIflags\fP\fB,\fP
+\fB           int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB);\fP
+\fBint munmap(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB);\fP
 .fi
 .SH 説明
-.BR mmap ()
-は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成する。
-新しいマッピングの開始アドレスは
-.I addr
-で指定される。マッピングの長さは
-.I length
-引き数で指定される。
+\fBmmap\fP()  は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成する。 新しいマッピングの開始アドレスは \fIaddr\fP
+で指定される。マッピングの長さは \fIlength\fP 引き数で指定される。
 
-.I addr
-が NULL の場合、カーネルがマッピングを作成するアドレスを選択する。
-この方法は最も移植性のある新しいマッピングの作成方法である。
-.I addr
-が NULL でない場合、カーネルはマッピングをどこに配置するかのヒントとして
-.I addr
-を使用する。Linux では、マッピングはすぐ近くのページ境界に作成される。
-.\" Linux 2.6.24 より前では、アドレスは (アドレスが大きくなる方向で)
-.\" すぐ次のページ境界に切り上げられていた。
-.\" Linux 2.6.24 以降では、切り下げられる!
-新しいマッピングのアドレスは、呼び出しの返り値として返される。
+.\" Before Linux 2.6.24, the address was rounded up to the next page
+.\" boundary; since 2.6.24, it is rounded down!
+\fIaddr\fP が NULL の場合、カーネルがマッピングを作成するアドレスを選択する。 この方法は最も移植性のある新しいマッピングの作成方法である。
+\fIaddr\fP が NULL でない場合、カーネルはマッピングをどこに配置するかのヒントとして \fIaddr\fP を使用する。Linux
+では、マッピングはすぐ近くのページ境界に作成される。 新しいマッピングのアドレスは、呼び出しの返り値として返される。
 
-ファイルマッピングの内容は、
-ファイルディスクリプタ
-.I fd
-で参照されるファイル (もしくは他のオブジェクト) のオフセット
-.I offset
-から開始される
-.I length
-バイトのデータで初期化される
-(ファイルマッピングは無名マッピングの反対語である。
-.B MAP_ANONYMOUS
-を参照)。
-.I offset
-は
-.I sysconf(_SC_PAGE_SIZE)
-が返すページサイズの倍数でなければならない。
+ファイルマッピングの内容は、 ファイルディスクリプタ \fIfd\fP で参照されるファイル (もしくは他のオブジェクト) のオフセット \fIoffset\fP
+から開始される \fIlength\fP バイトのデータで初期化される (ファイルマッピングは無名マッピングの反対語である。 \fBMAP_ANONYMOUS\fP
+を参照)。 \fIoffset\fP は \fIsysconf(_SC_PAGE_SIZE)\fP が返すページサイズの倍数でなければならない。
 .LP
-引き数
-.I prot
-には、マッピングのメモリ保護をどのように行なうかを指定する
-(ファイルのオープンモードと矛盾してはいけない)。
-.I prot
-には、
-.B PROT_NONE
-か、以下のフラグをひとつ以上ビット毎の論理和 (OR) をとったものを
-指定できる。
-.TP 1.1i
-.B PROT_EXEC
+引き数 \fIprot\fP には、マッピングのメモリ保護をどのように行なうかを指定する (ファイルのオープンモードと矛盾してはいけない)。 \fIprot\fP
+には、 \fBPROT_NONE\fP か、以下のフラグをひとつ以上ビット毎の論理和 (OR) をとったものを 指定できる。
+.TP  1.1i
+\fBPROT_EXEC\fP
 ページは実行可能である。
-.TP
-.B PROT_READ
+.TP 
+\fBPROT_READ\fP
 ページは読み込み可能である。
-.TP
-.B PROT_WRITE
+.TP 
+\fBPROT_WRITE\fP
 ページに書き込み可能である。
-.TP
-.B PROT_NONE
+.TP 
+\fBPROT_NONE\fP
 ページにはアクセスできない。
 .LP
-.I flags
-引き数により、マッピングに対する更新が同じ領域をマッピングしている
-他のプロセスに見えるか、更新がマッピング元のファイルを通じて
-伝えられるか、が決定される。この動作は、以下の値のいずれか一つだけ
-(複数は指定できない) を
-.I flags
-に含めることで指定する。
-.TP 1.1i
-.B MAP_SHARED
-このマッピングを共有する。
-マッピングに対する更新はこのファイルをマッピングしている他のプロセス
-から見える。更新はマッピング元のファイルを通じて伝えられる。
-ただし、ファイルの実際の更新は
-.BR msync (2)
-または
-.BR munmap ()
+\fIflags\fP 引き数により、マッピングに対する更新が同じ領域をマッピングしている 他のプロセスに見えるか、更新がマッピング元のファイルを通じて
+伝えられるか、が決定される。この動作は、以下の値のいずれか一つだけ (複数は指定できない) を \fIflags\fP に含めることで指定する。
+.TP  1.1i
+\fBMAP_SHARED\fP
+このマッピングを共有する。 マッピングに対する更新はこのファイルをマッピングしている他のプロセス
+から見える。更新はマッピング元のファイルを通じて伝えられる。 ただし、ファイルの実際の更新は \fBmsync\fP(2)  または \fBmunmap\fP()
 が呼ばれるまで行われないこともある。
-.TP
-.B MAP_PRIVATE
-プライベートな copy-on-write (書き込み時コピー) マップを生成する。
-マッピングに対する更新は同じファイルをマッピングしている他のプロセス
-には見えず、更新がマッピング元のファイルを通じて伝えられることもない。
-.BR mmap ()
-の呼び出し後にマッピング元のファイルに対して行われた変更が、
-マップ領域に反映されるかどうかは規定されていない。
+.TP 
+\fBMAP_PRIVATE\fP
+プライベートな copy\-on\-write (書き込み時コピー) マップを生成する。
+マッピングに対する更新は同じファイルをマッピングしている他のプロセス には見えず、更新がマッピング元のファイルを通じて伝えられることもない。
+\fBmmap\fP()  の呼び出し後にマッピング元のファイルに対して行われた変更が、 マップ領域に反映されるかどうかは規定されていない。
 .LP
-上記の二つのフラグは POSIX.1-2001 で規定されている。
+上記の二つのフラグは POSIX.1\-2001 で規定されている。
 
-さらに、以下の値のうち 0 個以上をビット毎の論理和 (OR) で
-.I flags
-に指定することができる。
-.TP
-.BR MAP_32BIT " (Linux 2.4.20, 2.6 以降)"
-マッピングをプロセスのアドレス空間の先頭 2 ギガバイト以内に配置する。
-このフラグがサポートされているのは x86-64 アーキテクチャ上の
-64 ビットプログラムのみである。
-このフラグが追加されたのは、スレッドのスタックをメモリの先頭 2GB 以内の
-どこかに割り当てることで、初期のいくつかの 64 ビットプロセッサにおける
-コンテキストスイッチの性能問題を改善するためである。
+さらに、以下の値のうち 0 個以上をビット毎の論理和 (OR) で \fIflags\fP に指定することができる。
+.TP 
+\fBMAP_32BIT\fP (Linux 2.4.20, 2.6 以降)
 .\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
-最近の x86-64 プロセッサではこの性能問題はもはや存在せず、
-そのようなシステムではこのフラグを使用する必要はない。
-.B MAP_FIXED
-がセットされている場合は、
-.B MAP_32BIT
+マッピングをプロセスのアドレス空間の先頭 2 ギガバイト以内に配置する。 このフラグがサポートされているのは x86\-64 アーキテクチャ上の 64
+ビットプログラムのみである。 このフラグが追加されたのは、スレッドのスタックをメモリの先頭 2GB 以内の どこかに割り当てることで、初期のいくつかの
+64 ビットプロセッサにおける コンテキストスイッチの性能問題を改善するためである。 最近の x86\-64 プロセッサではこの性能問題はもはや存在せず、
+そのようなシステムではこのフラグを使用する必要はない。 \fBMAP_FIXED\fP がセットされている場合は、 \fBMAP_32BIT\fP
 フラグは無視される。
-.TP
-.B MAP_ANON
-.B MAP_ANONYMOUS
-の同義語。非推奨。
-.TP
-.B MAP_ANONYMOUS
-マッピングはどのファイルとも関連付けされない。
-マッピングの内容は 0 で初期化される。
-引き数
-.I fd
-と
-.I offset
-は無視される。
-ただし、実装によっては
-.B MAP_ANONYMOUS
-(もしくは
-.BR MAP_ANON )
-が指定された場合、
-.I fd
-を \-1 にする必要があり、
-移植性が必要なアプリケーションでは必ず
-.I fd
-を \-1 にすべきである。
-.B MAP_ANONYMOUS
-と
-.B MAP_SHARED
-を組み合わせての利用は
-カーネル 2.4 以降の Linux でのみサポートされている。
-.TP
-.B MAP_DENYWRITE
-このフラグは無視される
-.\" 1.1.36 で導入され、1.3.24 で削除された。
-(ずっと前は、マップ元のファイルへの書き込みを行おうとすると、エラー
-.B ETXTBUSY
-で失敗するようにシグナルが設定されていたが、これは denial-of-service
-(サービス拒否) 攻撃の原因となった)。
-.TP
-.B MAP_EXECUTABLE
+.TP 
+\fBMAP_ANON\fP
+\fBMAP_ANONYMOUS\fP の同義語。非推奨。
+.TP 
+\fBMAP_ANONYMOUS\fP
+マッピングはどのファイルとも関連付けされない。 マッピングの内容は 0 で初期化される。 引き数 \fIfd\fP と \fIoffset\fP は無視される。
+ただし、実装によっては \fBMAP_ANONYMOUS\fP (もしくは \fBMAP_ANON\fP)  が指定された場合、 \fIfd\fP を \-1
+にする必要があり、 移植性が必要なアプリケーションでは必ず \fIfd\fP を \-1 にすべきである。 \fBMAP_ANONYMOUS\fP と
+\fBMAP_SHARED\fP を組み合わせての利用は カーネル 2.4 以降の Linux でのみサポートされている。
+.TP 
+\fBMAP_DENYWRITE\fP
+.\" Introduced in 1.1.36, removed in 1.3.24.
+このフラグは無視される (ずっと前は、マップ元のファイルへの書き込みを行おうとすると、エラー \fBETXTBUSY\fP
+で失敗するようにシグナルが設定されていたが、これは denial\-of\-service (サービス拒否) 攻撃の原因となった)。
+.TP 
+\fBMAP_EXECUTABLE\fP
+.\" Introduced in 1.1.38, removed in 1.3.24. Flag tested in proc_follow_link.
+.\" (Long ago, it signaled that the underlying file is an executable.
+.\" However, that information was not really used anywhere.)
+.\" Linus talked about DOS related to MAP_EXECUTABLE, but he was thinking of
+.\" MAP_DENYWRITE?
 このフラグは無視される。
-.\" 1.1.38 で導入され、1.3.24 で削除された。
-.\" proc_follow_link でテストされるフラグである。(ずっと前は、
-.\" マップ元のファイルが実行可能であることを知らせるようになっていた。
-.\" しかし、その情報は実際にはどこでも使われなかった。)
-.\" Linus は MAP_EXECUTABLE に関連して DoS の話をしたが、
-.\" MAP_DENYWRITE のことを考えていたのかな?
-.TP
-.B MAP_FILE
-互換性のためのフラグ。無視される。
+.TP 
+\fBMAP_FILE\fP
 .\" On some systems, this was required as the opposite of
 .\" MAP_ANONYMOUS -- mtk, 1 May 2007
-.TP
-.B MAP_FIXED
-.I addr
-をアドレスのヒントとして使用するのではなく、
-.I addr
-で指定されたアドレスをそのまま使用してマッピングを配置する。
-.I addr
-はページサイズの倍数でなければならない。
-.I addr
-と
-.I len
-で指定されたメモリ領域が既存のマッピングのページと重なる場合、
-既存のマッピングの重なった部分は捨てられる。
-もし指定されたアドレスが使用できない場合、
-.BR mmap ()
-は失敗する。
-マッピングに対して固定アドレスを要求するのは移植性の面で劣るので、
-このオプションは使用しないことを推奨する。
-.TP
-.B MAP_GROWSDOWN
-スタック用に使用される。マッピングをメモリ内で逆向きに行うことを
-カーネル仮想メモリシステムに指示する。
-(訳注:マッピングは通常はメモリ・アドレスが増加する向きに行うが、
-このオプションを指定すると逆向きにマッピングを行う)
-.TP
-.BR MAP_HUGETLB " (Linux 2.6.32 以降)"
-"huge page" を使ってマッピングを割り当てる。
-詳しい情報は、カーネル・ソースの
-.I Documentation/vm/hugetlbpage.txt
-を参照。
-.TP
-.BR MAP_LOCKED " (Linux 2.5.37 以降)"
-マップされた領域のページを
-.BR mlock (2)
-の方法でメモリ内にロックする。
-それ以前のカーネルでは、このフラグは無視される。
-.\" このフラグがセットされていると、マッピングされたページはスワップアウト
-.\" されない。
-.TP
-.BR MAP_NONBLOCK " (Linux 2.5.46 以降)"
-.B MAP_POPULATE
-と組み合わせた場合のみ意味を持つ。
-read-ahead (前もって読み込むこと) を実行しない。
-単に、すでに RAM 上に存在するページに対して
-ページテーブルエントリを作成するだけである。
-Linux 2.6.23 以降では、このフラグは
-.B MAP_POPULATE
-に何の影響も与えない。
-いつか
-.B MAP_POPULATE
-と
-.B MAP_NONBLOCK
+互換性のためのフラグ。無視される。
+.TP 
+\fBMAP_FIXED\fP
+\fIaddr\fP をアドレスのヒントとして使用するのではなく、 \fIaddr\fP で指定されたアドレスをそのまま使用してマッピングを配置する。
+\fIaddr\fP はページサイズの倍数でなければならない。 \fIaddr\fP と \fIlen\fP
+で指定されたメモリ領域が既存のマッピングのページと重なる場合、 既存のマッピングの重なった部分は捨てられる。 もし指定されたアドレスが使用できない場合、
+\fBmmap\fP()  は失敗する。 マッピングに対して固定アドレスを要求するのは移植性の面で劣るので、 このオプションは使用しないことを推奨する。
+.TP 
+\fBMAP_GROWSDOWN\fP
+スタック用に使用される。マッピングをメモリ内で逆向きに行うことを カーネル仮想メモリシステムに指示する。
+(訳注:マッピングは通常はメモリ・アドレスが増加する向きに行うが、 このオプションを指定すると逆向きにマッピングを行う)
+.TP 
+\fBMAP_HUGETLB\fP (Linux 2.6.32 以降)
+"huge page" を使ってマッピングを割り当てる。 詳しい情報は、カーネル・ソースの
+\fIDocumentation/vm/hugetlbpage.txt\fP を参照。
+.TP 
+\fBMAP_LOCKED\fP (Linux 2.5.37 以降)
+.\" If set, the mapped pages will not be swapped out.
+マップされた領域のページを \fBmlock\fP(2)  の方法でメモリ内にロックする。 それ以前のカーネルでは、このフラグは無視される。
+.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
 を組み合わせた場合の動作は実装し直されるかもしれない。
-.TP
-.B MAP_NORESERVE
-このマッピングに対するスワップ空間の予約を行わない。
-スワップ空間を予約した場合は、このマッピングの変更が必ず可能なことが
-保証される。予約を行わなかった場合、物理メモリに空きがないと
-書き込み時に
-.B SIGSEGV
-エラーを受け取ることがある。
-.BR proc (5)
-の
-.I /proc/sys/vm/overcommit_memory
-ファイルについての議論も参照。
-バージョン 2.6 より前のカーネルでは、このフラグは書き込み可能な
-プライベート・マッピングについてのみ効果があった。
-.TP
-.BR MAP_POPULATE " (Linux 2.5.46 以降)"
-マッピング用のページテーブルを配置 (populate) する
-ファイルマッピングの場合には、これによりファイルが先読み (read-ahead)
-が行われる。この以後は、マッピングに対するアクセスがページフォールトで
-ブロックされることがなくなる。
-.BR MAP_POPULATE
-は Linux 2.6.23 以降でプライベート・マッピングについてのみ
-サポートされている。
-.LP
-上記のフラグの中では、
-.B MAP_FIXED
-だけが POSIX.1-2001 で規定されている。
-しかしながら、ほとんどのシステムで
-.B MAP_ANONYMOUS
-(またはその同義語である
-.BR MAP_ANON )
-もサポートされている。
-.TP
-.BR MAP_STACK " (Linux 2.6.27 以降)"
-プロセスやスレッドのスタックに適したアドレスにマッピングを割り当てる。
-現在のところ、このフラグは何もしないが、
-glibc のスレッド実装では使用されている。
-これは、いくつかのアーキテクチャではスタックの割り当てに関して特別な扱い
-が必要な場合に、glibc にそのサポートを後で透過的に実装できるようにする
-ためである。
+.TP 
+\fBMAP_NORESERVE\fP
+このマッピングに対するスワップ空間の予約を行わない。 スワップ空間を予約した場合は、このマッピングの変更が必ず可能なことが
+保証される。予約を行わなかった場合、物理メモリに空きがないと 書き込み時に \fBSIGSEGV\fP エラーを受け取ることがある。 \fBproc\fP(5)
+の \fI/proc/sys/vm/overcommit_memory\fP ファイルについての議論も参照。 バージョン 2.6
+より前のカーネルでは、このフラグは書き込み可能な プライベート・マッピングについてのみ効果があった。
+.TP 
+\fBMAP_POPULATE\fP (Linux 2.5.46 以降)
+マッピング用のページテーブルを配置 (populate) する ファイルマッピングの場合には、これによりファイルが先読み (read\-ahead)
+が行われる。この以後は、マッピングに対するアクセスがページフォールトで ブロックされることがなくなる。 \fBMAP_POPULATE\fP は Linux
+2.6.23 以降でプライベート・マッピングについてのみ サポートされている。
+.TP 
+\fBMAP_STACK\fP (Linux 2.6.27 以降)
 .\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
 .\" commit cd98a04a59e2f94fa64d5bf1e26498d27427d5e7
 .\" http://thread.gmane.org/gmane.linux.kernel/720412
 .\" "pthread_create() slow for many threads; also time to revisit 64b
 .\"  context switch optimization?"
+プロセスやスレッドのスタックに適したアドレスにマッピングを割り当てる。 現在のところ、このフラグは何もしないが、 glibc
+のスレッド実装では使用されている。 これは、いくつかのアーキテクチャではスタックの割り当てに関して特別な扱い が必要な場合に、glibc
+にそのサポートを後で透過的に実装できるようにする ためである。
+.TP 
+\fBMAP_UNINITIALIZED\fP (Linux 2.6.33 以降)
+無名ページ (anonymous page) のクリアを行わない。このフラグは組み込みデバイス
+での性能向上を目的に作られてものである。カーネルの設定で
+\fBCONFIG_MMAP_ALLOW_UNINITIALIZED\fP オプションが有効になっている場合のみ、
+このフラグは効果を持つ。
+セキュリティ面の考慮から、このオプションは通常組み込みデバイス (すなわち、
+ユーザメモリの内容を完全に制御化におけるデバイス) においてのみ有効にされる。
+.LP
+上記のフラグの中では、 \fBMAP_FIXED\fP だけが POSIX.1\-2001 で規定されている。 しかしながら、ほとんどのシステムで
+\fBMAP_ANONYMOUS\fP (またはその同義語である \fBMAP_ANON\fP)  もサポートされている。
 .LP
-いくつかのシステムでは、上記以外にフラグとして
-.BR MAP_AUTOGROW ,
-.BR MAP_AUTORESRV ,
-.BR MAP_COPY ,
-.B MAP_LOCAL
-が規定されている。
+いくつかのシステムでは、上記以外にフラグとして \fBMAP_AUTOGROW\fP, \fBMAP_AUTORESRV\fP, \fBMAP_COPY\fP,
+\fBMAP_LOCAL\fP が規定されている。
 .LP
-.BR mmap ()
-によってマップされたメモリの属性は
-.BR fork (2)
-の際に継承される。
+\fBmmap\fP()  によってマップされたメモリの属性は \fBfork\fP(2)  の際に継承される。
 .LP
-ファイルはページサイズの整数倍の領域にマップされる。サイズがページサイズの
-整数倍でないファイルの場合、マップ時に残りの領域は 0 で埋められ、この領域へ
-書きこみを行ってもファイルに書き出されることはない。マッピングを行った元
-ファイルのサイズを変更した場合、元ファイルの追加されたり削除された領域に対応
-するマップされたページに対してどのような影響があるかは規定されていない。
+ファイルはページサイズの整数倍の領域にマップされる。サイズがページサイズの 整数倍でないファイルの場合、マップ時に残りの領域は 0
+で埋められ、この領域へ 書きこみを行ってもファイルに書き出されることはない。マッピングを行った元
+ファイルのサイズを変更した場合、元ファイルの追加されたり削除された領域に対応 するマップされたページに対してどのような影響があるかは規定されていない。
 .SS munmap()
-システムコール
-.BR munmap ()
-は指定されたアドレス範囲のマップを消去し、
-これ以降のその範囲内へのメモリ参照は不正となる。
-この領域は、プロセスが終了したときにも自動的にアンマップされる。
-一方、ファイル記述子をクローズしても、この領域はアンマップされない。
+システムコール \fBmunmap\fP()  は指定されたアドレス範囲のマップを消去し、 これ以降のその範囲内へのメモリ参照は不正となる。
+この領域は、プロセスが終了したときにも自動的にアンマップされる。 一方、ファイル記述子をクローズしても、この領域はアンマップされない。
 .LP
-.I addr
-アドレスはページサイズの整数倍でなければならない。指定された範囲の一部分を
-含む全てのページはアンマップされ、これ以降にこれらのページへの参照があると
-.B SIGSEGV
-が発生する。
-指定した範囲内にマップされたページが一つも含まれていない場合でも
-エラーにならない。
+\fIaddr\fP アドレスはページサイズの整数倍でなければならない。指定された範囲の一部分を
+含む全てのページはアンマップされ、これ以降にこれらのページへの参照があると \fBSIGSEGV\fP が発生する。
+指定した範囲内にマップされたページが一つも含まれていない場合でも エラーにならない。
 .SS ファイルと関連付けられたマッピングに対するタイムスタンプの更新
-ファイルと関連付けられたマッピングの場合、マッピングされたファイルの
-.I st_atime
-フィールドは、
-.BR mmap ()
-されてからアンマップ (unmap) されるまでの間に更新されることがある。
-それまでに更新が行われていなければ、マップされたページへの最初の参照があった
-際に更新される。
+ファイルと関連付けられたマッピングの場合、マッピングされたファイルの \fIst_atime\fP フィールドは、 \fBmmap\fP()  されてからアンマップ
+(unmap) されるまでの間に更新されることがある。 それまでに更新が行われていなければ、マップされたページへの最初の参照があった 際に更新される。
 .LP
-.B PROT_WRITE
-と
-.B MAP_SHARED
-の両方を指定してマップされたファイルの場合、書き込みがあると、
-.I st_ctime
-と
-.I st_mtime
-の両フィールドは、マップされた領域への書き込みより後で、
-.B MS_SYNC
-または
-.B MS_ASYNC
-フラグを指定して
-.BR msync (2)
-が呼ばれる前までに更新される。
+\fBPROT_WRITE\fP と \fBMAP_SHARED\fP の両方を指定してマップされたファイルの場合、書き込みがあると、 \fIst_ctime\fP と
+\fIst_mtime\fP の両フィールドは、マップされた領域への書き込みより後で、 \fBMS_SYNC\fP または \fBMS_ASYNC\fP フラグを指定して
+\fBmsync\fP(2)  が呼ばれる前までに更新される。
 .SH 返り値
-.BR mmap ()
-は成功するとマップされた領域へのポインタを返す。
-失敗すると値
-.B MAP_FAILED
-(つまり
-.IR "(void\ *)\ \-1" )
-を返し、
-.I errno
-がエラーの内容にしたがってセットされる。
-.BR munmap ()
-は成功すると 0 を返す。失敗すると \-1 を返し、
-.I errno
-がセットされる (多くの場合
-.B EINVAL
-になるだろう)。
+\fBmmap\fP()  は成功するとマップされた領域へのポインタを返す。 失敗すると値 \fBMAP_FAILED\fP (つまり \fI(void\ *)\ \-1\fP)  を返し、 \fIerrno\fP がエラーの内容にしたがってセットされる。 \fBmunmap\fP()  は成功すると 0 を返す。失敗すると \-1
+を返し、 \fIerrno\fP がセットされる (多くの場合 \fBEINVAL\fP になるだろう)。
 .SH エラー
-.TP
-.B EACCES
-以下のいずれかの場合。
-ファイル記述子の参照先が通常のファイルではない (non-regular file) 。
-.B MAP_PRIVATE
-を要求したが
-.I fd
-は読み込み用にオープンされていない。
-.B MAP_SHARED
-を要求して
-.B PROT_WRITE
-をセットしたが
-.I fd
-は読み書きモード
-.RB ( O_RDWR )
-でオープンされていない、
-.B PROT_WRITE
-をセットしたが、ファイルは追加 (append) 専用である。
-.TP
-.B EAGAIN
-ファイルがロックされている。またはロックされているメモリが多すぎる
-.RB ( setrlimit (2)
-を参照)。
-.TP
-.B EBADF
-.I fd
-が有効なファイル記述子 (file descriptor) ではない
-(かつ
-.B MAP_ANONYMOUS
-がセットされていない)。
-.TP
-.B EINVAL
-.I addr
-か
-.I length
-か
-.I offset
-が適切でない
-(例えば、大きすぎるとか、ページ境界にアラインメントされていない)。
-.TP
-.B EINVAL
-(Linux 2.6.12 以降)
-.I length
-が 0 であった。
-.TP
-.B EINVAL
-.I flags
-に
-.B MAP_PRIVATE
-と
-.B MAP_SHARED
-のどちらも含まれていなかった、もしくは
-その両方が含まれていた。
-.TP
-.B ENFILE
-.\" これは共有匿名 (anonymous) セグメントのためのものである。
+.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) 専用である。
+.TP 
+\fBEAGAIN\fP
+ファイルがロックされている。またはロックされているメモリが多すぎる (\fBsetrlimit\fP(2)  を参照)。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイル記述子 (file descriptor) ではない (かつ \fBMAP_ANONYMOUS\fP がセットされていない)。
+.TP 
+\fBEINVAL\fP
+\fIaddr\fP か \fIlength\fP か \fIoffset\fP が適切でない (例えば、大きすぎるとか、ページ境界にアラインメントされていない)。
+.TP 
+\fBEINVAL\fP
+(Linux 2.6.12 以降)  \fIlength\fP が 0 であった。
+.TP 
+\fBEINVAL\fP
+\fIflags\fP に \fBMAP_PRIVATE\fP と \fBMAP_SHARED\fP のどちらも含まれていなかった、もしくは その両方が含まれていた。
+.TP 
+\fBENFILE\fP
+.\" This is for shared anonymous segments
 .\" [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp()
-オープンされたファイルの総数がシステムの制限に達した。
 .\" .TP
 .\" .B ENOEXEC
-.\" ファイルを読み込み用にマップできなかった。
-.TP
-.B ENODEV
-指定されたファイルが置かれているファイルシステムがメモリマッピングをサポート
-していない。
-.TP
-.B ENOMEM
+.\" A file could not be mapped for reading.
+システム全体でオープンされているファイルの総数が上限に達した。
+.TP 
+\fBENODEV\fP
+指定されたファイルが置かれているファイルシステムがメモリマッピングをサポート していない。
+.TP 
+\fBENOMEM\fP
 メモリに空きがない、または処理中のプロセスのマッピング数が最大数を超過した。
-.TP
-.B EPERM
-.I prot
-引き数は
-.B PROT_EXEC
-を行うように指定されているが、
-no-exec でマウントされたファイルシステム上のファイルに
+.TP 
+\fBEPERM\fP
+.\" (Since 2.4.25 / 2.6.0.)
+\fIprot\fP 引き数は \fBPROT_EXEC\fP を行うように指定されているが、 no\-exec でマウントされたファイルシステム上のファイルに
 マップ領域が対応している。
-.\" (2.4.25 / 2.6.0 以降)
-.TP
-.B ETXTBSY
-.B MAP_DENYWRITE
-がセットされているが
-.I fd
-で指定されているオブジェクトは書き込み用に開かれている。
+.TP 
+\fBETXTBSY\fP
+\fBMAP_DENYWRITE\fP がセットされているが \fIfd\fP で指定されているオブジェクトは書き込み用に開かれている。
 .LP
 マップ領域を利用する際に、以下のシグナルが発生することがある:
-.TP
-.B SIGSEGV
+.TP 
+\fBSIGSEGV\fP
 読み込み専用で mmap された領域へ書き込みを行おうとした。
-.TP
-.B SIGBUS
-バッファのうち、ファイルに関連づけられていない部分
-(例えばファイル末尾を越えた部分など。これには
-他のプロセスがファイルを切り詰めた場合なども含まれる)
-にアクセスしようとした。
+.TP 
+\fBSIGBUS\fP
+バッファのうち、ファイルに関連づけられていない部分 (例えばファイル末尾を越えた部分など。これには
+他のプロセスがファイルを切り詰めた場合なども含まれる)  にアクセスしようとした。
 .SH 準拠
-SVr4, 4.4BSD, POSIX.1-2001.
-.\" SVr4 にはさらに ENXIO と ENODEV のエラーコードについての記述がある。
-.\" SUSv2 にはさらに EMFILE と EOVERFLOW のエラーコードについての記述がある。
+.\" SVr4 documents additional error codes ENXIO and ENODEV.
+.\" SUSv2 documents additional error codes EMFILE and EOVERFLOW.
+SVr4, 4.4BSD, POSIX.1\-2001.
 .SH 可用性
-.BR mmap (),
-.BR msync (2)
-.BR munmap ()
-が利用可能な POSIX システムでは、
-.B _POSIX_MAPPED_FILES
-は <unistd.h> で 0 より大きな値に定義される
-.RB ( sysconf (3)
+.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
+.\" -1: unavailable, 0: ask using sysconf().
+.\" glibc defines it to 1.
+\fBmmap\fP(), \fBmsync\fP(2)  \fBmunmap\fP()  が利用可能な POSIX システムでは、
+\fB_POSIX_MAPPED_FILES\fP は <unistd.h> で 0 より大きな値に定義される (\fBsysconf\fP(3)
 も参照のこと)。
-.\" POSIX.1-2001: _POSIX_MAPPED_FILES は -1 か 0 か 200112L の
-.\" いずれかに定義されることになっている。
-.\" -1: 利用不可、0: sysconf() に問いあわせる
-.\" glibc では POSIX_MAPPED_FILES は 1 に定義されている。
 .SH 注意
-カーネル 2.4 以降、このシステムコールは
-.BR mmap2 (2)
-に取って代わられた。
-現在では、
-.\" プラットフォームにより異なるが、 glibc 2.1/2.2 あたりから。
-glibc の
-.BR mmap ()
-のラッパー関数は
-.I offset
-を適切に調整してから
-.BR mmap2 (2)
-を起動する。
+.\" 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 などの) いくつかのアーキテクチャでは、
-.B PROT_WRITE
-をセットすると、暗黙のうちに
-.B PROT_READ
-がセットされる。
-.B PROT_READ
-をセットした際に暗黙のうちに
-.B PROT_EXEC
-がセットされるかどうかは、アーキテクチャ依存である。
-移植性を考慮したプログラムでは、
-新規にマップした領域でコードを実行したい場合は、常に
-.B PROT_EXEC
-をセットすべきである。
+(i386 などの) いくつかのアーキテクチャでは、 \fBPROT_WRITE\fP をセットすると、暗黙のうちに \fBPROT_READ\fP
+がセットされる。 \fBPROT_READ\fP をセットした際に暗黙のうちに \fBPROT_EXEC\fP がセットされるかどうかは、アーキテクチャ依存である。
+移植性を考慮したプログラムでは、 新規にマップした領域でコードを実行したい場合は、常に \fBPROT_EXEC\fP をセットすべきである。
 
-マッピングを作成する移植性のある方法は、
-.I addr
-に 0 (NULL) を指定し、
-.I flags
-から
-.B MAP_FIXED
-を外すことである。
-この場合、システムがマッピング用のアドレスの選択を行う。
-アドレスは既存のマッピングと衝突しないように、
-かつ 0 にならないように選択される。
-.B MAP_FIXED
-フラグが指定され、かつ
-.I addr
-が 0 (NULL)
+マッピングを作成する移植性のある方法は、 \fIaddr\fP に 0 (NULL) を指定し、 \fIflags\fP から \fBMAP_FIXED\fP
+を外すことである。 この場合、システムがマッピング用のアドレスの選択を行う。 アドレスは既存のマッピングと衝突しないように、 かつ 0
+にならないように選択される。 \fBMAP_FIXED\fP フラグが指定され、かつ \fIaddr\fP が 0 (NULL)
 の場合には、マップされるアドレスが 0 (NULL) になる。
 .SH バグ
-Linux においては、上記の
-.B MAP_NORESERVE
-で述べられているような保証はない。
-デフォルトでは、システムがメモリを使い切った場合には、
-どのプロセスがいつ強制終了されるか分からないからである。
+Linux においては、上記の \fBMAP_NORESERVE\fP で述べられているような保証はない。
+デフォルトでは、システムがメモリを使い切った場合には、 どのプロセスがいつ強制終了されるか分からないからである。
 
-2.6.7 より前のカーネルでは、
-.I prot
-に
-.B PROT_NONE
-が指定された場合にのみ、
-.B MAP_POPULATE
+2.6.7 より前のカーネルでは、 \fIprot\fP に \fBPROT_NONE\fP が指定された場合にのみ、 \fBMAP_POPULATE\fP
 フラグが効力を持つ。
 
-SUSv3 では、
-.I length
-が 0 の場合、
-.BR mmap ()
-は失敗すると規定されている。しかしながら、2.6.12 より前のカーネルでは、
-この場合に
-.BR mmap ()
-は成功していた (マッピングは作成されず、
-.I addr
-が返されていた)。
-カーネル 2.6.12 以降では、
-.BR mmap ()
-はエラー
-.B EINVAL
-で失敗する。
+SUSv3 では、 \fIlength\fP が 0 の場合、 \fBmmap\fP()  は失敗すると規定されている。しかしながら、2.6.12
+より前のカーネルでは、 この場合に \fBmmap\fP()  は成功していた (マッピングは作成されず、 \fIaddr\fP が返されていた)。 カーネル
+2.6.12 以降では、 \fBmmap\fP()  はエラー \fBEINVAL\fP で失敗する。
 .SH 例
 .\" FIXME . Add an example here that uses an anonymous shared region for
 .\" IPC between parent and child.
 .PP
-以下のプログラムは、一番目のコマンドライン引き数で指定された
-ファイルの一部を標準出力に表示する。
-表示する範囲は、二番目、三番目のコマンドライン引き数で渡される
-オフセットと長さで指定される。
-このプログラムは、指定されたファイルの必要なページのメモリ・
-マッピングを作成し、
-.BR write (2)
-を使って所望のバイトを出力する。
+以下のプログラムは、一番目のコマンドライン引き数で指定された ファイルの一部を標準出力に表示する。
+表示する範囲は、二番目、三番目のコマンドライン引き数で渡される オフセットと長さで指定される。
+このプログラムは、指定されたファイルの必要なページのメモリ・ マッピングを作成し、 \fBwrite\fP(2)  を使って所望のバイトを出力する。
 .nf
 
 #include <sys/mman.h>
@@ -604,7 +321,7 @@ SUSv3 では、
 #include <stdlib.h>
 #include <unistd.h>
 
-#define handle_error(msg) \\
+#define handle_error(msg) \e
     do { perror(msg); exit(EXIT_FAILURE); } while (0)
 
 int
@@ -618,7 +335,7 @@ main(int argc, char *argv[])
     ssize_t s;
 
     if (argc < 3 || argc > 4) {
-        fprintf(stderr, "%s file offset [length]\\n", argv[0]);
+        fprintf(stderr, "%s file offset [length]\en", argv[0]);
         exit(EXIT_FAILURE);
     }
 
@@ -634,7 +351,7 @@ main(int argc, char *argv[])
         /* offset for mmap() must be page aligned */
 
     if (offset >= sb.st_size) {
-        fprintf(stderr, "offset is past end of file\\n");
+        fprintf(stderr, "offset is past end of file\en");
         exit(EXIT_FAILURE);
     }
 
@@ -663,25 +380,14 @@ main(int argc, char *argv[])
     }
 
     exit(EXIT_SUCCESS);
-} /* main */
+}
 .fi
-\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR getpagesize (2),
-.BR mincore (2),
-.BR mlock (2),
-.BR mmap2 (2),
-.BR mprotect (2),
-.BR mremap (2),
-.BR msync (2),
-.BR remap_file_pages (2),
-.BR setrlimit (2),
-.BR shmat (2),
-.BR shm_open (3),
-.BR shm_overview (7)
+\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)
 .br
-B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
+B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\-129 and 389\-391.
 .\"
-.\" 私の後について言ってみて: プライベートな読み込み専用のマッピングは
-.\" 共有された読み込み専用のマッピングと 100% 等しい。
-.\" 「もし」も「しかし」も「たぶん」もない。-- Linus
+.\" Repeat after me: private read-only mappings are 100% equivalent to
+.\" shared read-only mappings. No ifs, buts, or maybes. -- Linus