remap_file_pages - システムコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- 注意
- エラー
- 準拠
- 関連項目
名前
remap_file_pages - 非線形ファイルマッピングを作成する。
書式
#include <sys/mman.h>
int remap_file_pages(void *
start
,
size_t
size
, int
prot
,
ssize_t
pgoff
, int
flags
);
説明
remap_file_pages
()システムコールは非線形なマッピング、
つまりファイルのページがメモリ上で連続しない順番でマップされる
マッピングを作成するために使われる。
remap_file_pages
()を使う方が
mmap
(2) を繰り返して使うより優れている点は、
前者の方法ではカーネルが VMA (Virtual Memory Area, 仮想メモリ領域)
データ構造体を追加で作成する必要がないことである。
非線形マッピングを作成するためには、
以下のようなステップを実行する:
-
1.
-
mmap
()を使い、マッピングを作成する (このマッピングは最初は線形である)。
このマッピングは
MAP_SHARED
フラグを指定して作成されなければならない。
-
2.
-
remap_file_pages
()を 1 回以上呼び出して、
マッピングのページとファイルのページの対応関係を再構成する。
ファイルの同じページをマッピング領域の複数の場所に
マップすることが可能である。
pgoff
と
size
引き数は、マッピング内で再配置されるファイルの領域を指定する。
pgoff
はファイルオフセットであり、単位はシステムのページサイズである。
size
は領域の長さであり、単位はバイトである。
start
引き数は 2 つの目的で使われる。
第 1 の目的は、この引き数によって再編成したいページの
マッピングを識別することである。
よって
start
は
mmap
()の呼び出しで過去にマップされた領域内のアドレスでなければならない。
第 2 の目的は、
pgoff
と
size
で識別されるファイルページが置かれる予定のアドレスを、
start
によって指定することである。
start
と
size
に指定する値は、システムのページサイズの倍数とすべきである。
それ以外の場合、カーネルは「両方」の値を
最も近いページサイズの倍数へ「切り下げる」。
prot
引き数は 0 に指定されなければならない。
flags
引き数は
mmap
()のものと同じ意味であるが、
MAP_NONBLOCK
以外の全てのフラグは無視される。
返り値
成功した場合、
remap_file_pages
()は 0 を返す。
エラーの場合、-1 が返され、
errno
が適切に設定される。
注意
remap_file_pages
()システムコールは Linux 2.5.46 で登場した。
エラー
-
EINVAL
-
start
が
MAP_SHARED
フラグを指定して作成された有効なマッピングを参照していない。
-
EINVAL
-
start
,
size
,
prot
,
pgoff
のいずれかが不正である。
準拠
remap_file_pages
()システムコールは Linux 固有のものである。
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする