OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / draft / man2 / mremap.2
index 2bd1282..5195af5 100644 (file)
@@ -1,13 +1,12 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" Copyright (c) 1996 Tom Bjorkholm <tomb@mydata.se>
 .\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
 .\" This is free documentation; you can redistribute it and/or
 .\" modify it under the terms of the GNU General Public License as
 .\" published by the Free Software Foundation; either version 2 of
 .\" the License, or (at your option) any later version.
 .\"
-
+.\" The GNU General Public License's references to "object code"
 .\" and "executables" are to be interpreted as the output of any
 .\" document formatting or typesetting system, including
 .\" intermediate and printed output.
@@ -18,9 +17,9 @@
 .\" GNU General Public License for more details.
 .\"
 .\" You should have received a copy of the GNU General Public
-.\" License along with this manual; if not, write to the Free
-.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
-.\" USA.
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
 .\"
 .\" 1996-04-11 Tom Bjorkholm <tomb@mydata.se>
 .\"            First version written (1.3.86)
 .\"            Update for Linux 1.3.87 and later
 .\" 2005-10-11 mtk: Added NOTES for MREMAP_FIXED; revised EINVAL text.
 .\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
 .\"         all rights reserved.
 .\" Translated 1997-02-23, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
 .\" Updated 2002-11-26, Kentaro Shirakata <argrath@ub32.org>
 .\" Updated 2005-10-09, Kentaro Shirakata <argrath@ub32.org>
 .\" Updated 2006-04-16, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.28
+.\" Updated 2012-05-01, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.\"WORD:       virtual memory          仮想メモリ
-.\"WORD:       remap                   再マッピング
-.\"WORD:       argument                引き数
-.\"WORD:       address space           アドレス空間
-.\"WORD:       page align              ページ境界
-.\"WORD:       linear                  リニア
-.\"WORD:       process                 プロセス
-.\"WORD:       segment                 セグメント
-.\"WORD:       real memory             実メモリ
-.\"WORD:       segmentation violation  セグメンテーション侵害
-.\"WORD:       segmentation fault      セグメンテーション違反
-.\"WORD:       scheme                  方式
-.\"WORD:       implement               実装
-.\"WORD:       lock                    ロック
-.\"
-.TH MREMAP 2 2010-06-10 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O mremap \- remap a virtual memory address
+.TH MREMAP 2 2010\-06\-10 Linux "Linux Programmer's Manual"
 .SH 名前
-mremap \- 仮想メモリ・アドレスを再マッピングする
-.\"O .SH SYNOPSIS
+mremap \- 仮想メモリーアドレスを再マッピングする
 .SH 書式
 .nf
-.\"O .BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
-.BR "#define _GNU_SOURCE" "         /* feature_test_macros(7) 参照 */"
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
 .br
-.B #include <sys/mman.h>
+\fB#include <sys/mman.h>\fP
 .sp
-.BI "void *mremap(void *" old_address ", size_t " old_size ,
-.BI "             size_t " new_size ", int " flags ", ... /* void *" new_address " */);"
+\fBvoid *mremap(void *\fP\fIold_address\fP\fB, size_t \fP\fIold_size\fP\fB,\fP
+\fB             size_t \fP\fInew_size\fP\fB, int \fP\fIflags\fP\fB, ... /* void *\fP\fInew_address\fP\fB */);\fP
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O .BR mremap ()
-.\"O expands (or shrinks) an existing memory mapping, potentially
-.\"O moving it at the same time (controlled by the \fIflags\fP argument and
-.\"O the available virtual address space).
-.BR mremap ()
-は既存のメモリ・マッピングの拡張 (または縮小) を行う。
-同時に移動されることもある
-(\fIflags\fP 引き数と利用可能な仮想アドレス空間によって決まる)。
+\fBmremap\fP()  は既存のメモリーマッピングの拡張 (または縮小) を行う。 同時に移動されることもある (\fIflags\fP
+引き数と利用可能な仮想アドレス空間によって決まる)。
 
-.\"O \fIold_address\fP is the old address of the virtual memory block that you
-.\"O want to expand (or shrink).
-.\"O Note that \fIold_address\fP has to be page
-.\"O aligned.
-.\"O \fIold_size\fP is the old size of the
-.\"O virtual memory block.
-.\"O \fInew_size\fP is the requested size of the
-.\"O virtual memory block after the resize.
-\fIold_address\fP は拡張 (または縮小) しようとする仮想メモリ・ブロック
-の元のアドレスである。\fIold_address\fP はページ境界に合っていなければ
-ならない点に注意すること。\fIold_size\fP は元の仮想メモリ・ブロックの
-サイズである。
-\fInew_size\fP は要求する変更後の仮想メモリ・ブロックのサイズである。
-.\"O An optional fifth argument,
-.\"O .IR new_address ,
-.\"O may be provided; see the description of
-.\"O .B MREMAP_FIXED
-.\"O below.
-5 番目の引き数として
-.I new_address
-を指定することができる。下記の
-.B MREMAP_FIXED
-の説明を参照のこと。
+\fIold_address\fP は拡張 (または縮小) しようとする仮想メモリーブロック の元のアドレスである。\fIold_address\fP
+はページ境界に合っていなければ ならない点に注意すること。\fIold_size\fP は元の仮想メモリーブロックの サイズである。 \fInew_size\fP
+は要求する変更後の仮想メモリーブロックのサイズである。 5 番目の引き数として \fInew_address\fP を指定することができる。下記の
+\fBMREMAP_FIXED\fP の説明を参照のこと。
 
-.\"O In Linux the memory is divided into pages.
-.\"O A user process has (one or)
-.\"O several linear virtual memory segments.
-.\"O Each virtual memory segment has one
-.\"O or more mappings to real memory pages (in the page table).
-.\"O Each virtual memory segment has its own
-.\"O protection (access rights), which may cause
-.\"O a segmentation violation if the memory is accessed incorrectly (e.g.,
-.\"O writing to a read-only segment).
-.\"O Accessing virtual memory outside of the
-.\"O segments will also cause a segmentation violation.
-Linux ではメモリはページに分割される。ユーザー・プロセスは (一つまたは)
-複数のリニアな仮想メモリセグメントを持つ。
-それぞれの仮想メモリセグメントは一つ以上の実メモリ・ページ
-にマッピングされている (マッピング情報はページ・テーブルで管理される)。
-仮想メモリセグメントにはセグメント毎の保護 (アクセス権) が設定されており、
-メモリが不正にアクセスされた場合 (例えば読み込み専用のセグメントに
+Linux ではメモリーはページに分割される。ユーザープロセスは (一つまたは)  複数のリニアな仮想メモリーセグメントを持つ。
+それぞれの仮想メモリーセグメントは一つ以上の実メモリーページ にマッピングされている (マッピング情報はページテーブルで管理される)。
+仮想メモリーセグメントにはセグメント毎の保護 (アクセス権) が設定されており、 メモリーが不正にアクセスされた場合 (例えば読み込み専用のセグメントに
 書き込んだ場合)、セグメンテーション侵害 (segmentation violation) を
-引き起こす。また、セグメント外の仮想メモリにアクセスした場合にも
-セグメンテーション侵害が発生する。
+引き起こす。また、セグメント外の仮想メモリーにアクセスした場合にも セグメンテーション侵害が発生する。
 
-.\"O .BR mremap ()
-.\"O uses the Linux page table scheme.
-.\"O .BR mremap ()
-.\"O changes the
-.\"O mapping between virtual addresses and memory pages.
-.\"O This can be used to implement a very efficient
-.\"O .BR realloc (3).
-.BR mremap ()
-は Linux のページ・テーブル方式を使用する。
-.BR mremap ()
-は仮想アドレスとメモリ・ページのマッピングを変更する。これは非常に効率的な
-.BR realloc (3)
-を実装するのに使用されている。
+\fBmremap\fP()  は Linux のページテーブル方式を使用する。 \fBmremap\fP()
+は仮想アドレスとメモリーページのマッピングを変更する。これは非常に効率的な \fBrealloc\fP(3)  を実装するのに使用されている。
 
-.\"O The \fIflags\fP bit-mask argument may be 0, or include the following flag:
 \fIflags\fP ビットマスク引数は 0 または以下のフラグを含む:
-.TP
-.B MREMAP_MAYMOVE
-.\"O By default, if there is not sufficient space to expand a mapping
-.\"O at its current location, then
-.\"O .BR mremap ()
-.\"O fails.
-デフォルトでは、現在の位置にマッピングを拡張するための
-十分な空きがなければ
-.BR mremap ()
-は失敗する。
-.\"O If this flag is specified, then the kernel is permitted to
-.\"O relocate the mapping to a new virtual address, if necessary.
-このフラグが指定されると、カーネルは必要があればマッピングを
-新しい仮想アドレスに再配置することができる
-.\"O If the mapping is relocated,
-.\"O then absolute pointers into the old mapping location
-.\"O become invalid (offsets relative to the starting address of
-.\"O the mapping should be employed).
-マッピングが再配置されると、古いマッピング位置への絶対ポインタは
-無効になる (マッピングの開始アドレスからの相対オフセットは有効のままである)。
-.TP
-.\"O .BR MREMAP_FIXED " (since Linux 2.3.31)"
-.BR MREMAP_FIXED " (Linux 2.3.31 以降)"
-.\"O This flag serves a similar purpose to the
-.\"O .B MAP_FIXED
-.\"O flag of
-.\"O .BR mmap (2).
-このフラグは
-.BR mmap (2)
-の
-.B MAP_FIXED
-フラグと似たような目的で用いられる。
-.\"O If this flag is specified, then
-.\"O .BR mremap ()
-.\"O accepts a fifth argument,
-.\"O .IR "void *new_address" ,
-.\"O which specifies a page-aligned address to which the mapping must
-.\"O be moved.
-このフラグが指定されると、
-.BR mremap ()
-は 5 番目の引き数
-.I "void *new_address"
-を受け取り、この引数はマッピングが移動されるべきアドレスを指定する。
-このアドレスはページ境界に合っていなければならない。
-.\"O Any previous mapping at the address range specified by
-.\"O .I new_address
-.\"O and
-.\"O .I new_size
-.\"O is unmapped.
-.I new_address
-と
-.I new_size
-で指定されるアドレス範囲に過去のマッピングがあった場合、
-そのマッピングはアンマップされる (unmapped)。
-.\"O If
-.\"O .B MREMAP_FIXED
-.\"O is specified, then
-.\"O .B MREMAP_MAYMOVE
-.\"O must also be specified.
-.B MREMAP_FIXED
-を指定した場合は、
-.B MREMAP_MAYMOVE
-も指定しなければならない。
+.TP 
+\fBMREMAP_MAYMOVE\fP
+デフォルトでは、現在の位置にマッピングを拡張するための 十分な空きがなければ \fBmremap\fP()  は失敗する。
+このフラグが指定されると、カーネルは必要があればマッピングを 新しい仮想アドレスに再配置することができる
+マッピングが再配置されると、古いマッピング位置への絶対ポインターは 無効になる (マッピングの開始アドレスからの相対オフセットは有効のままである)。
+.TP 
+\fBMREMAP_FIXED\fP (Linux 2.3.31 以降)
+このフラグは \fBmmap\fP(2)  の \fBMAP_FIXED\fP フラグと似たような目的で用いられる。 このフラグが指定されると、
+\fBmremap\fP()  は 5 番目の引き数 \fIvoid\ *new_address\fP
+を受け取り、この引数はマッピングが移動されるべきアドレスを指定する。 このアドレスはページ境界に合っていなければならない。 \fInew_address\fP
+と \fInew_size\fP で指定されるアドレス範囲に過去のマッピングがあった場合、 そのマッピングはアンマップされる (unmapped)。
+\fBMREMAP_FIXED\fP を指定した場合は、 \fBMREMAP_MAYMOVE\fP も指定しなければならない。
 .PP
-.\"O If the memory segment specified by
-.\"O .I old_address
-.\"O and
-.\"O .I old_size
-.\"O is locked (using
-.\"O .BR mlock (2)
-.\"O or similar), then this lock is maintained when the segment is
-.\"O resized and/or relocated.
-.\"O As a consequence, the amount of memory locked by the process may change.
-.I old_address
-と
-.I old_size
-で指定されるメモリセグメントが
-.RB ( mlock (2)
-や同様のもので) ロックされている場合、セグメントのサイズが変わったり
-再配置されたりした時にロックも維持される。
-その結果、プロセスによってロックされるメモリの量は変化する。
-.\"O .SH "RETURN VALUE"
+\fIold_address\fP と \fIold_size\fP で指定されるメモリーセグメントが (\fBmlock\fP(2)  や同様のもので)
+ロックされている場合、セグメントのサイズが変わったり 再配置されたりした時にロックも維持される。
+その結果、プロセスによってロックされるメモリーの量は変化する。
 .SH 返り値
-.\"O On On success
-.\"O .BR mremap ()
-.\"O returns a pointer to the new virtual memory area.
-.\"O On error, the value
-.\"O .B MAP_FAILED
-.\"O (that is, \fI(void\ *)\ \-1\fP) is returned,
-.\"O and \fIerrno\fP is set appropriately.
-成功した場合は
-.BR mremap ()
-は新しい仮想メモリ領域へのポインタを返す。
-エラーの場合は
-.B MAP_FAILED
-(すなわち \fI(void\ *)\ \-1\fP) が返され、
-\fIerrno\fP が適切に設定される。
-.\"O .SH ERRORS
+成功した場合は \fBmremap\fP()  は新しい仮想メモリー領域へのポインターを返す。 エラーの場合は \fBMAP_FAILED\fP (すなわち
+\fI(void\ *)\ \-1\fP) が返され、 \fIerrno\fP が適切に設定される。
 .SH エラー
-.TP
-.B EAGAIN
-.\"O The caller tried to expand a memory segment that is locked,
-.\"O but this was not possible without exceeding the
-.\"O .B RLIMIT_MEMLOCK
-.\"O resource limit.
-呼び出し元がロックされているメモリセグメントを拡張しようとしたが、
-.B RLIMIT_MEMLOCK
+.TP 
+\fBEAGAIN\fP
+呼び出し元がロックされているメモリーセグメントを拡張しようとしたが、 \fBRLIMIT_MEMLOCK\fP
 リソース制限を越えずにこれを行うことができない。
-.TP
-.B EFAULT
-.\"O "Segmentation fault." Some address in the range
-.\"O \fIold_address\fP to \fIold_address\fP+\fIold_size\fP is an invalid
-.\"O virtual memory address for this process.
-.\"O You can also get
-.\"O .B EFAULT
-.\"O even if there exist mappings that cover the
-.\"O whole address space requested, but those mappings are of different types.
-「セグメンテーション違反(segmentation fault)」
-\fIold_address\fP から \fIold_address\fP+\fIold_size\fP の
-範囲のアドレスのどれかがこのプロセスにおいて不正な仮想メモリ・アドレスである。
-たとえ要求したアドレス空間全体を含むようなマッピングがあったとしても、
-それらのマッピングが異なった型ならば
-.B EFAULT
-を受け取るだろう。
-.TP
-.B EINVAL
-.\"O An invalid argument was given.
-不正な引き数が与えられた。
-.\"O Possible causes are: \fIold_address\fP was not
-.\"O page aligned; a value other than
-.\"O .B MREMAP_MAYMOVE
-.\"O or
-.\"O .B MREMAP_FIXED
-.\"O was specified in
-.\"O .IR flags ;
-.\"O .I new_size
-.\"O was zero;
-.\"O .I new_size
-.\"O or
-.\"O .I new_address
-.\"O was invalid;
-.\"O or the new address range specified by
-.\"O .I new_address
-.\"O and
-.\"O .I new_size
-.\"O overlapped the old address range specified by
-.\"O .I old_address
-.\"O and
-.\"O .IR old_size ;
-.\"O or
-.\"O .B MREMAP_FIXED
-.\"O was specified without also specifying
-.\"O .BR MREMAP_MAYMOVE .
-可能性のある原因は以下の通りである:
-たいていは \fIold_address\fP がページ境界に
-合ってない;
-.I flags
-に
-.B MREMAP_MAYMOVE
-または
-.B MREMAP_FIXED
-以外の値が指定されている;
-.I new_size
-がゼロ;
-.I new_size
-または
-.I new_address
-の値が不正;
-.I new_address
-と
-.I new_size
-で指定される新しいアドレス範囲が
-.I old_address
-と
-.I old_size
-で指定される古いアドレス範囲と重なっている;
-.B MREMAP_FIXED
-が指定されているが
-.B MREMAP_MAYMOVE
-が指定されていない。
-.TP
-.B ENOMEM
-.\"O The memory area cannot be expanded at the current virtual address, and the
-.\"O .B MREMAP_MAYMOVE
-.\"O flag is not set in \fIflags\fP.
-.\"O Or, there is not enough (virtual) memory available.
-現在の仮想アドレスではメモリ領域が拡張できず、
-.B MREMAP_MAYMOVE
-フラグが \fIflags\fP に設定されていない。
-または十分な (仮想) メモリが存在しない。
-.\"O .SH "CONFORMING TO"
+.TP 
+\fBEFAULT\fP
+「セグメンテーション違反(segmentation fault)」 \fIold_address\fP から
+\fIold_address\fP+\fIold_size\fP の 範囲のアドレスのどれかがこのプロセスにおいて不正な仮想メモリーアドレスである。
+たとえ要求したアドレス空間全体を含むようなマッピングがあったとしても、 それらのマッピングが異なった型ならば \fBEFAULT\fP を受け取るだろう。
+.TP 
+\fBEINVAL\fP
+不正な引き数が与えられた。 可能性のある原因は以下の通りである: たいていは \fIold_address\fP がページ境界に 合ってない;
+\fIflags\fP に \fBMREMAP_MAYMOVE\fP または \fBMREMAP_FIXED\fP 以外の値が指定されている; \fInew_size\fP
+がゼロ; \fInew_size\fP または \fInew_address\fP の値が不正; \fInew_address\fP と \fInew_size\fP
+で指定される新しいアドレス範囲が \fIold_address\fP と \fIold_size\fP で指定される古いアドレス範囲と重なっている;
+\fBMREMAP_FIXED\fP が指定されているが \fBMREMAP_MAYMOVE\fP が指定されていない。
+.TP 
+\fBENOMEM\fP
+現在の仮想アドレスではメモリー領域が拡張できず、 \fBMREMAP_MAYMOVE\fP フラグが \fIflags\fP に設定されていない。 または十分な
+(仮想) メモリーが存在しない。
 .SH 準拠
-.\"O This call is Linux-specific, and should not be used in programs
-.\"O intended to be portable.
-.\"O .\" 4.2BSD had a (never actually implemented)
-.\"O .\" .BR mremap (2)
-.\"O .\" call with completely different semantics.
-このコールは Linux 特有であり、移植を意図したプログラムで
-使用すべきではない。
-.\" 4.2BSD には (実際に実装されていたわけではないが)
-.\" 全く異った方式 (semantics) による
+.\" 4.2BSD had a (never actually implemented)
 .\" .BR mremap (2)
-.\" コールがあった。
-.\" FIXME perhaps remove above statement about 4.2BSD.
-.\"O .SH NOTES
+.\" call with completely different semantics.
+このコールは Linux 特有であり、移植を意図したプログラムで 使用すべきではない。
 .SH 注意
-.\"O Prior to version 2.4, glibc did not expose the definition of
-.\"O .BR MREMAP_FIXED ,
-.\"O and the prototype for
-.\"O .BR mremap ()
-.\"O did not allow for the
-.\"O .I new_address
-.\"O argument.
-バージョン 2.4 より前の glibc では、
-.B MREMAP_FIXED
-の定義は公開されておらず、
-.BR mremap ()
-のプロトタイプは
-.I new_address
-引き数を取らなかった。
-.\"O .SH "SEE ALSO"
+バージョン 2.4 より前の glibc では、 \fBMREMAP_FIXED\fP の定義は公開されておらず、 \fBmremap\fP()  のプロトタイプは
+\fInew_address\fP 引き数を取らなかった。
 .SH 関連項目
-.BR brk (2),
-.BR getpagesize (2),
-.BR getrlimit (2),
-.BR mlock (2),
-.BR mmap (2),
-.BR sbrk (2),
-.BR realloc (3),
-.BR malloc (3)
-.P
-.\"O Your favorite OS text book for more information on paged memory.
-.\"O (\fIModern Operating Systems\fP by Andrew S. Tannenbaum,
-.\"O \fIInside Linux\fP by Randolf Bentson,
-.\"O \fIThe Design of the UNIX Operating System\fP by Maurice J. Bach.)
-ページ分割されたメモリについてもっと詳しく知りたいならば
-あなたの好みの OS の教科書を参照すること。
-(\fIModern Operating Systems\fP by Andrew S. Tannenbaum,
-\fIInside Linux\fP by Randolf Bentson,
-\fIThe Design of the UNIX Operating System\fP by Maurice J. Bach.)
+\fBbrk\fP(2), \fBgetpagesize\fP(2), \fBgetrlimit\fP(2), \fBmlock\fP(2), \fBmmap\fP(2),
+\fBsbrk\fP(2), \fBrealloc\fP(3), \fBmalloc\fP(3)
+
+ページ分割されたメモリーについてもっと詳しく知りたいならば、あなたのお気に入りのオペレーティングシステムの教科書を参照してほしい (例えば、
+\fIModern Operating Systems\fP by Andrew S. Tanenbaum, \fIInside Linux\fP by
+Randolf Bentson, \fIThe Design of the UNIX Operating System\fP by Maurice
+J. Bach.)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。