Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       remap_file_pages - 非線形ファイルマッピングを作成する。

書式

       #define _GNU_SOURCE         /* feature_test_macros(7) 参照 */
       #include <sys/mman.h>

       int remap_file_pages(void *addr, size_t size, int prot,
                            ssize_t pgoff, int flags);

説明

       remap_file_pages()   システムコールは非線形なマッピング、 つまりファイルのページがメモリ上
       で連続しない順番でマップされる マッピングを作成するために使われる。 remap_file_pages()  を
       使う方が   mmap(2)   を繰り返して使うより優れている点は、   前者の方法ではカーネルが   VMA
       (Virtual Memory Area, 仮想メモリ領域) データ構造体を追加で作成する必要がないことである。

       非線形マッピングを作成するためには、 以下のようなステップを実行する:

       1. mmap(2)  を使い、マッピングを作成する (このマッピングは最初は線形である)。 このマッピン
          グは MAP_SHARED フラグを指定して作成されなければならない。

       2. remap_file_pages()   を 1 回以上呼び出して、 マッピングのページとファイルのページの対応
          関係を再構成する。 ファイルの同じページをマッピング領域の複数の場所に  マップすることが
          可能である。

       pgoffsize 引き数は、マッピング内で再配置されるファイルの領域を指定する。 pgoff はファ
       イルオフセットであり、単位はシステムのページサイズである。 size は領域の長さであり、単位は
       バイトである。

       addr 引き数は 2 つの目的で使われる。 第 1 の目的は、この引き数によって再編成したいページの
       マッピングを識別することである。 よって addrmmap(2)   の呼び出しで過去にマップされた領
       域内のアドレスでなければならない。  第 2 の目的は、 pgoffsize で識別されるファイルペー
       ジが置かれる予定のアドレスを、 addr によって指定することである。

       addrsize  に指定する値は、システムのページサイズの倍数とすべきである。  それ以外の場
       合、カーネルは「両方」の値を 最も近いページサイズの倍数へ「切り下げる」。

       prot 引き数は 0 に指定されなければならない。

       flags 引き数は mmap(2)  のものと同じ意味であるが、 MAP_NONBLOCK 以外の全てのフラグは無視さ
       れる。

返り値

       成功した場合、 remap_file_pages()  は 0 を返す。 エラーの場合、-1 が返され、 errno  が適切
       に設定される。

エラー

       EINVAL addrMAP_SHARED フラグを指定して作成された有効なマッピングを参照していない。

       EINVAL addr, size, prot, pgoff のいずれかが不正である。

バージョン

       remap_file_pages()   システムコールは Linux 2.5.46 で登場した。 glibc でのサポートは glibc
       バージョン 2.3.3 で追加された。

準拠

       remap_file_pages()  システムコールは Linux 固有のものである。

関連項目

       getpagesize(2), mmap(2), mmap2(2), mprotect(2), mremap(2), msync(2)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部  である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。